/* ============ tokens (light only) ============ */
:root{
  --bg:#fbfbfc;
  --surface:#ffffff;
  --surface-2:#f4f5f7;
  --group:#f7f8f9;
  --line:#eaebef;
  --line-soft:#f1f2f5;
  --ink:#16181d;
  --ink-2:#5f6673;
  --ink-3:#9aa1ad;
  --accent:#2f6bff;
  --accent-soft:#eef3ff;
  --accent-ink:#1c4ed8;
  --task:#0d9463;
  --task-soft:#effaf5;
  --span:#c2700a;
  --span-soft:#fef8ee;
  --danger:#d4183d;
  --radius:12px;
  --radius-lg:16px;
  --shadow-sm:0 1px 2px rgba(20,24,33,.04);
  --shadow:0 4px 14px rgba(20,24,33,.07);
  --shadow-lg:0 16px 48px rgba(20,24,33,.14);
  --sans:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:14.5px;line-height:1.45;
  letter-spacing:-.03em;
  -webkit-font-smoothing:antialiased;
}
button,input,textarea,select{font:inherit;letter-spacing:inherit;color:inherit}
button{cursor:pointer;border:none;background:none;letter-spacing:-.03em}
.hidden{display:none !important}

/* ============ layout ============ */
.app{display:flex;min-height:100dvh}
.sidebar{display:none}
.main{flex:1;min-width:0}
.container{width:100%;max-width:1160px;margin:0 auto;padding:18px 16px 40px}

/* ============ header ============ */
.topbar{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px}
.topbar h1{font-size:21px;font-weight:800;letter-spacing:-.035em;margin:0}
.topbar .sub{font-size:12.5px;color:var(--ink-2);margin-top:1px}
.topbar .grow{flex:1;min-width:0}
.head-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}

/* toggle de visualização em ícones */
.view-toggle{display:flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px}
.view-toggle button{
  width:34px;height:30px;border-radius:8px;display:grid;place-items:center;
  color:var(--ink-3);transition:.14s;
}
.view-toggle button:hover{color:var(--ink-2)}
.view-toggle button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}
.view-toggle svg{width:16px;height:16px;display:block}

.add-btn{
  display:flex;align-items:center;gap:6px;padding:9px 14px;border-radius:10px;
  background:var(--accent);color:#fff;font-size:13px;font-weight:700;
  box-shadow:0 2px 8px rgba(47,107,255,.22);transition:.14s;
}
.add-btn:hover{background:#255ce8}
.add-btn svg{width:14px;height:14px}

/* barra de controles */
.controls{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.seg{display:inline-flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px}
.seg button{
  padding:7px 15px;border-radius:8px;font-size:12.5px;font-weight:700;
  color:var(--ink-3);transition:.14s;
}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}

.stepper{display:flex;align-items:center;gap:4px;margin-left:auto}
.stepper .now{font-size:13px;font-weight:700;color:var(--ink);padding:0 8px;white-space:nowrap}
.icon-btn{
  width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:var(--surface);border:1px solid var(--line);color:var(--ink-2);
  font-size:14px;line-height:1;transition:.14s;
}
.icon-btn:hover{background:var(--surface-2)}
.text-btn{
  padding:7px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--line);
  font-size:12.5px;font-weight:700;color:var(--ink-2);
}
.text-btn:hover{background:var(--surface-2)}

/* ============ card ============ */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.card-pad{padding:14px}

/* ============ mês ============ */
.dow{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}
.dow span{text-align:center;font-size:10px;font-weight:800;color:var(--ink-3);letter-spacing:.02em}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.day{
  aspect-ratio:1/1;border-radius:10px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:4px;min-height:40px;
  font-size:13px;font-weight:600;color:var(--ink);transition:.12s;
}
.day:hover:not(.blank){background:var(--surface-2)}
.day.blank{visibility:hidden}
.day.today{color:var(--accent);font-weight:800}
.day.sel{background:var(--ink);color:#fff;font-weight:800}
.day.sel:hover{background:var(--ink)}
.dots{display:flex;gap:2.5px;height:4px}
.dot{width:4px;height:4px;border-radius:50%}
.dot.event{background:var(--accent)}
.dot.task{background:var(--task)}
.dot.span{background:var(--span)}
.day.sel .dot{background:rgba(255,255,255,.85)}

/* ============ semana mobile ============ */
.wk-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:16px}
.wk-day{
  background:var(--surface);border:1px solid var(--line);border-radius:11px;
  padding:8px 2px;display:flex;flex-direction:column;align-items:center;gap:3px;transition:.14s;
}
.wk-day .l{font-size:9px;font-weight:800;color:var(--ink-3)}
.wk-day .n{font-size:14.5px;font-weight:800}
.wk-day.on{background:var(--ink);border-color:var(--ink)}
.wk-day.on .l{color:rgba(255,255,255,.6)}
.wk-day.on .n{color:#fff}
.wk-day.on .dot{background:rgba(255,255,255,.85)}

/* ============ agrupamento estilo referência ============ */
.group{background:var(--group);border:1px solid var(--line);border-radius:var(--radius-lg);padding:5px;margin-bottom:12px}
.group-head{display:flex;align-items:center;gap:9px;padding:9px 11px 10px}
.group-head .n{font-size:13px;font-weight:800;letter-spacing:-.03em}
.group-head .c{font-size:11.5px;color:var(--ink-3);font-weight:600}
.group-head .right{margin-left:auto;font-size:11.5px;color:var(--ink-3);font-weight:700}
.group-body{display:flex;flex-direction:column;gap:5px}

/* ============ bloco de item ============ */
.block{
  display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;
  padding:11px 12px;border-radius:11px;background:var(--surface);
  border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:.14s;
}
.block:hover{border-color:#dcdee4}
.block .bar{width:3px;align-self:stretch;border-radius:2px;flex-shrink:0;background:var(--accent)}
.block.task .bar{background:var(--task)}
.block.span .bar{background:var(--span)}
.block .body{
  flex:1;min-width:0;display:flex;align-items:flex-start;
  gap:10px;flex-wrap:wrap;row-gap:3px;
}
.block .t{
  font-size:13px;font-weight:700;letter-spacing:-.03em;color:var(--ink);
  display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap;
  min-width:0;overflow-wrap:anywhere;line-height:1.35;
}
.block .m{
  font-size:11.5px;color:var(--ink-3);font-weight:600;
  line-height:1.35;padding-top:1px;white-space:nowrap;flex-shrink:0;
}
.block.done{opacity:.5}
.block.done .t{text-decoration:line-through}

.pill{
  font-size:10px;font-weight:800;padding:3px 8px;border-radius:6px;flex-shrink:0;letter-spacing:-.01em;
}
.pill.event{background:var(--accent-soft);color:var(--accent-ink)}
.pill.task{background:var(--task-soft);color:var(--task)}
.pill.span{background:var(--span-soft);color:var(--span)}

/* ============ lista ============ */
.item{
  background:var(--surface);border:1px solid var(--line);border-radius:11px;
  padding:11px 12px;box-shadow:var(--shadow-sm);
}
.item.done{opacity:.55}
.item-row{display:flex;gap:10px;align-items:flex-start}
.check{
  width:19px;height:19px;border-radius:6px;border:1.5px solid #d7dae1;
  flex-shrink:0;margin-top:1px;background:var(--surface);
  display:grid;place-items:center;color:#fff;font-size:10px;transition:.14s;
}
.check.on{background:var(--task);border-color:var(--task)}
.check.na{opacity:.3;cursor:default}
.item .t{font-size:13.5px;font-weight:700;letter-spacing:-.03em}
.item.done .t{text-decoration:line-through}
.item .d{font-size:12px;color:var(--ink-2);margin-top:2px;white-space:pre-wrap}
.item .meta{display:flex;align-items:center;gap:7px;margin-top:6px;flex-wrap:wrap}
.meta .when{font-size:11.5px;color:var(--ink-3);font-weight:600}
.thumbs{display:flex;gap:5px;margin-top:9px;margin-left:29px;flex-wrap:wrap}
.thumbs img{width:46px;height:46px;border-radius:8px;object-fit:cover;border:1px solid var(--line);cursor:zoom-in}

.empty{text-align:center;padding:40px 20px;color:var(--ink-3);font-size:13px;font-weight:600}

/* ============ semana desktop ============ */
.wk-grid{display:grid;grid-template-columns:52px repeat(7,1fr)}
.wk-grid .corner{border-bottom:1px solid var(--line)}
.wk-grid .col-head{
  padding:9px 6px;text-align:center;border-bottom:1px solid var(--line);
  border-left:1px solid var(--line-soft);
}
.wk-grid .col-head .l{font-size:9.5px;font-weight:800;color:var(--ink-3)}
.wk-grid .col-head .n{font-size:16px;font-weight:800;margin-top:1px}
.wk-grid .col-head.today .n{color:var(--accent)}
.wk-grid .h-label{font-size:10px;font-weight:700;color:var(--ink-3);text-align:right;padding:3px 8px 0 0;height:54px}
.wk-grid .cell{border-left:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);height:54px;padding:2px;overflow:hidden}
.wk-grid .cell .block{padding:5px 7px;border-radius:7px;height:100%;gap:5px;box-shadow:none}
.wk-grid .cell .block .t{
  font-size:10.5px;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;
}
.wk-grid .cell .block .body{flex-direction:column;gap:0;row-gap:0}
.wk-grid .cell .block .m{white-space:nowrap}
.wk-grid .cell .block .m{font-size:9.5px;margin-top:0}
.wk-grid .cell .block .pill{display:none}
.allday-row{display:grid;grid-template-columns:52px 1fr;border-bottom:1px solid var(--line);padding:7px 0}
.allday-row .l{font-size:9px;font-weight:800;color:var(--ink-3);text-align:right;padding:5px 8px 0 0}
.allday-row .slot{display:flex;flex-direction:column;gap:4px;padding-left:8px}

/* ============ sheet ============ */
.backdrop{position:fixed;inset:0;background:rgba(16,20,28,.4);z-index:40;opacity:0;transition:opacity .2s}
.backdrop.show{opacity:1}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:41;background:var(--surface);
  border-radius:20px 20px 0 0;max-height:92dvh;overflow-y:auto;
  transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,0,1);
  box-shadow:var(--shadow-lg);
}
.sheet.show{transform:translateY(0)}
.sheet-inner{padding:10px 18px calc(22px + env(safe-area-inset-bottom))}
.grab{width:34px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 12px}
.sheet-head{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.sheet-head h2{font-size:18px;font-weight:800;letter-spacing:-.035em;margin:0;flex:1}

/* ============ formulário ============ */
.field{margin-bottom:15px}
.label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;color:var(--ink-2);margin-bottom:6px}
.label .opt{font-size:10.5px;font-weight:600;color:var(--ink-3)}
input[type=text],input[type=password],input[type=email],input[type=time],textarea{
  width:100%;padding:11px 12px;background:var(--surface);
  border:1px solid var(--line);border-radius:10px;font-size:14.5px;
  font-weight:500;transition:.14s;
}
input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
textarea{resize:vertical;min-height:66px;line-height:1.5}
::placeholder{color:var(--ink-3);font-weight:500}

.type-pick{display:flex;gap:7px}
.type-pick button{
  flex:1;text-align:left;padding:10px 12px;border-radius:10px;
  background:var(--surface);border:1.5px solid var(--line);transition:.14s;
}
.type-pick .n{font-size:13px;font-weight:800}
.type-pick .d{font-size:10.5px;color:var(--ink-3);margin-top:1px;font-weight:600}
.type-pick button.on{background:var(--accent-soft);border-color:var(--accent)}
.type-pick button.on .n{color:var(--accent-ink)}
.type-pick button.on .d{color:var(--accent-ink);opacity:.7}

.picker{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:13px}
.range-sum{display:flex;gap:7px;margin-bottom:12px}
.range-sum button{
  flex:1;text-align:left;padding:8px 11px;border-radius:9px;
  background:var(--surface);border:1.5px solid var(--line);transition:.14s;
}
.range-sum .l{font-size:9.5px;font-weight:800;color:var(--ink-3)}
.range-sum .v{font-size:14px;font-weight:800;margin-top:1px}
.range-sum button.on{background:var(--accent-soft);border-color:var(--accent)}
.range-sum button.on .l,.range-sum button.on .v{color:var(--accent-ink)}
.pick-head{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.pick-head .m{flex:1;font-size:13px;font-weight:800}
.pick-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.pick-day{height:34px;display:grid;place-items:center;font-size:12.5px;font-weight:600;transition:.1s}
.pick-day:hover:not(.blank):not(.in){background:var(--surface-2);border-radius:9px}
.pick-day.blank{visibility:hidden}
.pick-day.in{background:var(--accent-soft);color:var(--accent-ink);font-weight:800}
.pick-day.edge{background:var(--accent);color:#fff}
.pick-day.start{border-radius:10px 0 0 10px}
.pick-day.end{border-radius:0 10px 10px 0}
.pick-day.single{border-radius:10px}
.hint{font-size:11px;color:var(--ink-3);margin-top:8px;line-height:1.45;font-weight:500}

.time-row{display:flex;align-items:center;gap:7px}
.time-row input{flex:1}
.ghost-btn{padding:8px 12px;border-radius:9px;background:var(--surface-2);font-size:12px;font-weight:700;color:var(--ink-2)}

.att-strip{display:flex;gap:7px;flex-wrap:wrap}
.att{position:relative;width:68px;height:68px;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.att img{width:100%;height:100%;object-fit:cover;display:block}
.att .x{position:absolute;top:4px;right:4px;width:19px;height:19px;border-radius:50%;background:rgba(16,20,28,.7);color:#fff;font-size:10px;display:grid;place-items:center}
.att-add{
  width:68px;height:68px;border-radius:10px;border:1.5px dashed var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  color:var(--ink-3);background:var(--surface);
}
.att-add .p{font-size:17px;line-height:1}
.att-add .l{font-size:9.5px;font-weight:700}

/* nota de notificação, discreta */
.notify-note{
  display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-3);
  font-weight:600;padding-top:2px;
}
.notify-note svg{width:13px;height:13px;flex-shrink:0;opacity:.7}

.actions{display:flex;gap:8px;margin-top:20px;align-items:center}
.btn{flex:1;padding:13px;border-radius:11px;font-size:14px;font-weight:800;display:grid;place-items:center;transition:.14s}
.btn-ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink-2)}
.btn-ghost:hover{background:var(--surface-2)}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:#255ce8}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-danger{background:none;color:var(--danger);flex:0 0 auto;padding:13px 14px;font-weight:700}

/* ============ login ============ */
.auth{min-height:100dvh;display:grid;place-items:center;padding:24px}
.auth-box{width:100%;max-width:340px}
.auth-logo{width:46px;height:46px;border-radius:14px;background:var(--accent);margin:0 auto 16px;display:grid;place-items:center;box-shadow:0 6px 18px rgba(47,107,255,.24)}
.auth-logo svg{width:22px;height:22px;color:#fff}
.auth h1{font-size:22px;font-weight:800;text-align:center;letter-spacing:-.04em;margin:0 0 3px}
.auth .sub{text-align:center;color:var(--ink-2);font-size:13px;margin-bottom:24px;font-weight:500}
.auth .field{margin-bottom:9px}
.auth .btn{margin-top:6px}
.auth .switch{text-align:center;font-size:12.5px;color:var(--ink-2);margin-top:16px;font-weight:600}
.auth .switch button{color:var(--accent);font-weight:800}
.err{color:var(--danger);font-size:12px;min-height:17px;margin-top:6px;text-align:center;font-weight:600}

.push-banner{
  display:flex;align-items:center;gap:10px;padding:11px 13px;margin-bottom:14px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  font-size:12.5px;color:var(--ink-2);font-weight:600;box-shadow:var(--shadow-sm);
}
.push-banner .grow{flex:1}
.push-banner button{padding:7px 13px;border-radius:8px;background:var(--accent);color:#fff;font-size:12px;font-weight:700}

.toast{
  position:fixed;left:50%;bottom:28px;transform:translate(-50%,12px);
  background:var(--ink);color:#fff;padding:10px 17px;border-radius:10px;
  font-size:12.5px;font-weight:700;z-index:60;opacity:0;pointer-events:none;
  transition:.22s;box-shadow:var(--shadow);
}
.toast.show{opacity:1;transform:translate(-50%,0)}

.lightbox{position:fixed;inset:0;background:rgba(12,14,20,.88);z-index:70;display:grid;place-items:center;padding:24px}
.lightbox img{max-width:100%;max-height:100%;border-radius:10px}

/* ============ desktop ============ */
@media (min-width:900px){
  .container{padding:26px 30px 48px}
  .sidebar{
    display:flex;flex-direction:column;gap:3px;width:218px;flex-shrink:0;
    padding:20px 12px;background:var(--surface);border-right:1px solid var(--line);
    position:sticky;top:0;height:100dvh;
  }
  .sidebar .brand{display:flex;align-items:center;gap:9px;padding:4px 8px;margin-bottom:22px}
  .sidebar .brand .mark{width:30px;height:30px;border-radius:9px;background:var(--accent);display:grid;place-items:center}
  .sidebar .brand .mark svg{width:15px;height:15px;color:#fff}
  .sidebar .brand .n{font-size:14.5px;font-weight:800;letter-spacing:-.035em}
  .sidebar .sec{font-size:10px;font-weight:800;color:var(--ink-3);padding:0 10px;margin:10px 0 5px}
  .sidebar .nav-item{
    display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;
    font-size:13px;font-weight:700;color:var(--ink-2);width:100%;text-align:left;transition:.14s;
  }
  .sidebar .nav-item:hover{background:var(--surface-2)}
  .sidebar .nav-item.on{background:var(--surface-2);color:var(--ink)}
  .sidebar .nav-item svg{width:15px;height:15px;flex-shrink:0;opacity:.7}
  .sidebar .nav-item.on svg{opacity:1;color:var(--accent)}
  .sidebar .spacer{flex:1}
  .month-layout{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}
  .day{min-height:72px;aspect-ratio:auto;justify-content:flex-start;padding:7px 0}
  .day .dots{margin-top:auto}
  .sheet{
    left:50%;right:auto;bottom:auto;top:50%;width:500px;max-width:calc(100vw - 48px);
    border-radius:18px;transform:translate(-50%,-46%) scale(.98);opacity:0;
    max-height:88dvh;transition:transform .2s,opacity .2s;
  }
  .sheet.show{transform:translate(-50%,-50%) scale(1);opacity:1}
  .grab{display:none}
  .sheet-inner{padding:20px 22px 22px}
}

/* ============ editor de blocos ============ */
.ed{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:6px 6px 4px;min-height:112px;cursor:text;
}
.ed-block{
  display:flex;align-items:flex-start;gap:4px;border-radius:7px;
  padding:0 2px;position:relative;
}
.ed-block.dragging{opacity:.35}
.ed-block.over-top{box-shadow:inset 0 2px 0 var(--accent)}
.ed-block.over-bottom{box-shadow:inset 0 -2px 0 var(--accent)}
.ed-handle{
  width:15px;flex-shrink:0;color:#cfd3da;font-size:11px;line-height:28px;
  text-align:center;cursor:grab;opacity:0;transition:opacity .12s;
  user-select:none;-webkit-user-select:none;
}
.ed-block:hover .ed-handle{opacity:1}
.ed-handle:active{cursor:grabbing}

/* marcador: largura fixa para o texto alinhar em todos os tipos */
.ed-marker{width:0;flex-shrink:0;display:flex;justify-content:center}
.ed-marker.ed-num,.ed-marker.ed-bullet{
  width:20px;line-height:28px;color:var(--ink-2);font-weight:700;
  font-size:13.5px;user-select:none;
}
.ed-marker.ed-bullet{font-size:16px;line-height:27px}
.ed-marker:has(.ed-check){width:24px;justify-content:flex-start}
.ed-check{
  width:17px;height:17px;border-radius:5px;border:1.5px solid #d7dae1;background:var(--surface);
  margin-top:6px;display:grid;place-items:center;color:#fff;font-size:9px;
  transition:.14s;flex-shrink:0;
}
.ed-check.on{background:var(--task);border-color:var(--task)}

.ed-main{flex:1;min-width:0}
.ed-text{
  min-height:28px;padding:4px 3px;font-size:14px;font-weight:500;line-height:1.5;
  outline:none;word-break:break-word;white-space:pre-wrap;
}
.ed-text[data-ph]:empty::before{content:attr(data-ph);color:var(--ink-3);pointer-events:none}
.ed-text.done{text-decoration:line-through;color:var(--ink-3)}

.ed-block-img .ed-main{padding:3px}
.ed-img{position:relative;display:inline-block;max-width:100%}
.ed-img img{max-width:100%;max-height:200px;border-radius:9px;display:block;border:1px solid var(--line);cursor:zoom-in}
.ed-img-x{
  position:absolute;top:6px;right:6px;width:21px;height:21px;border-radius:50%;
  background:rgba(16,20,28,.72);color:#fff;font-size:10px;display:grid;place-items:center;
}
.ed-add{
  display:block;width:100%;text-align:left;padding:6px 4px 6px 21px;
  font-size:12.5px;font-weight:600;color:var(--ink-3);border-radius:7px;margin-top:2px;
}
.ed-add:hover{background:var(--bg);color:var(--ink-2)}

/* menu do "/" */
.ed-menu{
  position:fixed;z-index:80;width:236px;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);
  padding:5px;max-height:280px;overflow-y:auto;
}
.ed-menu-head{font-size:9.5px;font-weight:800;color:var(--ink-3);padding:6px 9px 5px}
.ed-menu-item{
  display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;
  padding:7px 9px;border-radius:8px;transition:.1s;
}
.ed-menu-item:hover,.ed-menu-item.sel{background:var(--accent-soft)}
.ed-menu-item .l{font-size:13px;font-weight:700;color:var(--ink)}
.ed-menu-item .h{font-size:10.5px;color:var(--ink-3);font-weight:600}
.ed-menu-item:hover .l,.ed-menu-item.sel .l{color:var(--accent-ink)}

/* prévia do conteúdo nos cards da lista */
.preview{margin-top:5px;display:flex;flex-direction:column;gap:2px}
.preview .pl{font-size:12px;color:var(--ink-2);display:flex;gap:6px;align-items:flex-start;font-weight:500}
.preview .pl .mk{color:var(--ink-3);flex-shrink:0;font-weight:700}
.preview .pl.done{color:var(--ink-3);text-decoration:line-through}
.preview .more{font-size:11.5px;color:var(--ink-3);font-weight:600}
.progress{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;
  color:var(--task);background:var(--task-soft);padding:2.5px 8px;border-radius:6px;
}

/* ============ timeline da lista ============ */
.tl{position:relative;padding-left:2px}
.tl-day{display:flex;gap:12px;padding-bottom:18px;position:relative}
.tl-rail{
  width:14px;flex-shrink:0;display:flex;justify-content:center;position:relative;
}
.tl-rail::before{
  content:'';position:absolute;top:14px;bottom:-18px;width:1.5px;background:var(--line);
}
.tl-day:last-child .tl-rail::before{display:none}
.tl-dot{
  width:9px;height:9px;border-radius:50%;background:var(--surface);
  border:2px solid var(--line);margin-top:5px;z-index:1;
}
.tl-dot.today{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.tl-dot.late{background:var(--danger);border-color:var(--danger)}
.tl-body{flex:1;min-width:0}
.tl-head{display:flex;align-items:center;gap:8px;margin-bottom:9px;padding-top:1px}
.tl-date{font-size:13.5px;font-weight:800;letter-spacing:-.03em;color:var(--ink-2)}
.tl-count{
  font-size:10.5px;font-weight:700;color:var(--ink-3);background:var(--surface-2);
  padding:1.5px 7px;border-radius:5px;
}
.tl-now{
  font-size:9.5px;font-weight:800;color:#fff;background:var(--accent);
  padding:2px 7px;border-radius:5px;letter-spacing:-.01em;
}
.tl-items{display:flex;flex-direction:column;gap:6px}

/* hoje ganha contraste pelo texto e pelo ponto, sem caixa em volta */
.tl-day.today .tl-date{color:var(--ink);font-size:15px;font-weight:800}
.tl-day:not(.today):not(.late) .tl-date{font-weight:700}
.tl-day.late .tl-date{color:var(--danger)}

.item.late{background:#fdfbfb}
.item-title{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;min-width:0}
.item-title .t{min-width:0;overflow-wrap:anywhere;line-height:1.35}
.prio-dot{
  width:5px;height:5px;border-radius:50%;background:var(--accent);
  flex-shrink:0;margin-right:1px;align-self:center;
}
.item.high .t{font-weight:800}
.rep{font-size:11px;color:var(--ink-3);font-weight:700;line-height:1}
.late-tag{
  font-size:10px;font-weight:700;color:var(--danger);background:#fdf0f3;
  padding:2px 6px;border-radius:5px;
}
.nag-tag{
  font-size:10px;font-weight:700;color:var(--span);background:var(--span-soft);
  padding:2px 6px;border-radius:5px;
}

/* seg com quebra para opções longas */
.seg-wide{display:flex;flex-wrap:wrap;gap:2px;width:100%}
.seg-wide button{flex:1;min-width:70px;padding:8px 8px;font-size:12px}

/* interruptor */
.switch-row{
  display:flex;align-items:center;gap:12px;padding:11px 12px;cursor:pointer;
  background:var(--surface);border:1px solid var(--line);border-radius:11px;
}
.switch-row > div{flex:1}
.sw-title{font-size:13px;font-weight:700}
.sw-hint{font-size:11px;color:var(--ink-3);font-weight:500;margin-top:1px}
.sw{
  width:42px;height:25px;border-radius:13px;background:#dfe2e8;position:relative;
  flex-shrink:0;transition:.18s;
}
.sw.on{background:var(--accent)}
.sw-knob{
  position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;
  background:#fff;transition:.18s;box-shadow:0 1px 3px rgba(0,0,0,.18);
}
.sw.on .sw-knob{transform:translateX(17px)}

/* ============ timeline do dia (régua de horas) ============ */
.tk{position:relative;margin-top:2px}
.tk-scroll{overflow:auto;-webkit-overflow-scrolling:touch}
.tk-track{position:relative;min-width:100%}

/* marcas de hora */
.tk-h{position:absolute;color:var(--ink-3);font-size:10px;font-weight:700;pointer-events:none}
.tk-h span{display:block}

/* --- modo horizontal (desktop) --- */
.tk-h-mode .tk-scroll{padding-top:20px;padding-bottom:4px}
.tk-h-mode .tk-h{top:-18px;bottom:0;border-left:1px solid var(--line-soft)}
.tk-h-mode .tk-h span{position:absolute;top:-16px;left:4px;white-space:nowrap}
.tk-h-mode .tk-blocks{position:absolute;inset:0}
.tk-h-mode .tk-block{position:absolute}

/* --- modo vertical (mobile) --- */
.tk-v-mode .tk-scroll{padding-left:44px;overflow:visible}
.tk-v-mode .tk-track{margin-left:0}
.tk-v-mode .tk-h{left:-44px;right:0;border-top:1px solid var(--line-soft)}
.tk-v-mode .tk-h span{position:absolute;left:0;top:-7px;width:38px;text-align:right}
.tk-v-mode .tk-blocks{position:absolute;inset:0}
.tk-v-mode .tk-block{position:absolute}

/* marcador do agora */
.tk-now{position:absolute;z-index:3;pointer-events:none}
.tk-h-mode .tk-now{top:-6px;bottom:0;width:1.5px;background:#e5484d}
.tk-v-mode .tk-now{left:-44px;right:0;height:1.5px;background:#e5484d}
.tk-now-tag{
  position:absolute;background:#e5484d;color:#fff;font-size:9px;font-weight:800;
  padding:1.5px 5px;border-radius:4px;letter-spacing:-.01em;
}
.tk-h-mode .tk-now-tag{top:-17px;left:-16px}
.tk-v-mode .tk-now-tag{left:0;top:-8px}

/* blocos na régua */
.tk-block{
  display:flex;gap:7px;align-items:stretch;text-align:left;overflow:hidden;
  padding:7px 9px;border-radius:9px;background:var(--surface);
  border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:.14s;
}
/* bloco curto: tudo numa linha só, título e horário lado a lado */
.tk-block.short{padding:5px 8px;align-items:center}
.tk-block.short .tk-body{
  flex-direction:row;align-items:baseline;gap:7px;justify-content:flex-start;
}
.tk-block.short .tk-t{-webkit-line-clamp:1;flex:0 1 auto}
.tk-block.short .tk-m{flex-shrink:0}
.tk-block:hover{border-color:#d9dce3;box-shadow:var(--shadow)}
.tk-bar{width:3px;border-radius:2px;flex-shrink:0;background:var(--accent)}
.tk-block.task .tk-bar{background:var(--task)}
.tk-block.span .tk-bar{background:var(--span)}
.tk-body{
  min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center;
  gap:1px;overflow:hidden;
}
.tk-t{
  font-size:12px;font-weight:700;letter-spacing:-.03em;color:var(--ink);
  line-height:1.3;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.tk-t .rep,.tk-t .prio-dot{display:inline-block;vertical-align:middle;margin-right:3px}
.tk-m{
  font-size:10.5px;color:var(--ink-3);font-weight:600;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
.tk-block.done{opacity:.5}
.tk-block.done .tk-t{text-decoration:line-through}

/* faixa de dia inteiro acima da régua */
.tk-allday{display:flex;gap:9px;align-items:flex-start;margin-bottom:10px}
.tk-allday-l{
  font-size:8.5px;font-weight:800;color:var(--ink-3);padding-top:11px;
  flex-shrink:0;width:52px;line-height:1.2;
}
.tk-allday-items{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.time-sep{font-size:12px;font-weight:600;color:var(--ink-3);flex-shrink:0}
.time-row input:disabled{background:var(--surface-2);color:var(--ink-3);cursor:not-allowed}
