/* Cron Expression Generator — scoped.
   Inputs, labels, buttons and messages come from the shared .ftb-tool block in
   core.css so all five tools look like one product. Only cron-specific layout
   lives here. */

.ftb-tool-cron .ftb-cron-controls{display:grid;gap:var(--ftb-space-5);
  grid-template-columns:1fr;margin-bottom:var(--ftb-space-6)}
@media (min-width:768px){
  .ftb-tool-cron .ftb-cron-controls{grid-template-columns:2fr 1fr 1fr}
}
.ftb-tool-cron .ftb-field{margin-bottom:0}
/* Type selector included so this beats core's `.ftb-tool input[type=text]`
   (0,2,1) — a plain `.class [attr]` rule is 0,2,0 and silently loses. */
.ftb-tool-cron input[type=text][data-ftb="expr"]{font-family:var(--ftb-mono);
  font-size:var(--ftb-text-md);letter-spacing:.04em}

/* Reserve height so results appearing never shift layout (§10 CLS). */
.ftb-cron-result{min-height:360px}

.ftb-cron-desc{margin:0 0 var(--ftb-space-6);font-size:var(--ftb-text-xl);
  font-weight:var(--ftb-fw-semi);line-height:var(--ftb-lh-tight);
  letter-spacing:var(--ftb-ls-tight);color:var(--ftb-text)}

.ftb-cron-diagnostic{margin:0 0 var(--ftb-space-8);padding:var(--ftb-space-6);
  background:var(--ftb-warning-soft);border:1px solid var(--ftb-warning);
  border-left-width:4px;border-radius:var(--ftb-radius)}
.ftb-cron-diagnostic ul{margin:0;padding-left:var(--ftb-space-5)}
.ftb-cron-diagnostic li{margin-bottom:var(--ftb-space-4);font-size:var(--ftb-text-base);
  line-height:var(--ftb-lh-snug)}
.ftb-cron-diagnostic li:last-child{margin-bottom:0}
.ftb-cron-diagnostic strong{display:block;margin-bottom:2px}
.ftb-cron-diagnostic li.is-error{color:var(--ftb-error)}

.ftb-cron-diagnostic-title,.ftb-cron-runs-title{margin:0 0 var(--ftb-space-4);
  font-size:var(--ftb-text-lg);font-weight:var(--ftb-fw-semi);
  line-height:var(--ftb-lh-tight);letter-spacing:var(--ftb-ls-tight)}
.ftb-cron-diagnostic-title{color:var(--ftb-warning)}
.ftb-cron-runs-title{display:flex;flex-wrap:wrap;gap:var(--ftb-space-3);align-items:baseline}
.ftb-cron-tzname{font-size:var(--ftb-text-sm);font-weight:var(--ftb-fw-medium);
  color:var(--ftb-text-muted)}

.ftb-cron-list{margin:0;padding-left:var(--ftb-space-6)}
.ftb-cron-list li{margin-bottom:var(--ftb-space-3);font-family:var(--ftb-mono);
  font-size:var(--ftb-text-base);line-height:var(--ftb-lh-snug)}
.ftb-cron-rel{font-family:var(--ftb-font);color:var(--ftb-text-muted)}
.ftb-cron-flag{display:inline-block;margin-left:var(--ftb-space-2);padding:2px 10px;
  font-family:var(--ftb-font);font-size:var(--ftb-text-xs);font-weight:var(--ftb-fw-semi);
  background:var(--ftb-warning-soft);color:var(--ftb-warning);border-radius:var(--ftb-radius-full)}
.ftb-cron-note{margin:var(--ftb-space-4) 0 0;font-size:var(--ftb-text-sm);
  color:var(--ftb-text-muted)}

/* ---- Presets: the "every N" family, one click each ---- */
.ftb-cron-presets{display:flex;flex-wrap:wrap;align-items:center;
  gap:var(--ftb-space-2);margin-bottom:var(--ftb-space-5)}
.ftb-cron-presets-label{font-size:var(--ftb-text-sm);font-weight:var(--ftb-fw-semi);
  color:var(--ftb-text-muted);margin-right:var(--ftb-space-1)}
.ftb-cron-preset{min-height:var(--ftb-tap);padding:var(--ftb-space-2) var(--ftb-space-4);
  font-family:inherit;font-size:var(--ftb-text-sm);font-weight:var(--ftb-fw-medium);
  color:var(--ftb-text);background:var(--ftb-surface);
  border:1px solid var(--ftb-border-strong);border-radius:var(--ftb-radius-full);
  cursor:pointer;transition:var(--ftb-transition)}
.ftb-cron-preset:hover{border-color:var(--ftb-primary);color:var(--ftb-primary);
  background:var(--ftb-primary-soft)}
.ftb-cron-preset:focus-visible{outline:2px solid var(--ftb-primary);outline-offset:2px}

/* ---- Per-field builder ---- */
.ftb-cron-builder{margin-bottom:var(--ftb-space-6);padding:var(--ftb-space-4) var(--ftb-space-5);
  background:var(--ftb-surface);border:1px solid var(--ftb-border);
  border-radius:var(--ftb-radius)}
.ftb-cron-builder summary{min-height:var(--ftb-tap);display:flex;align-items:center;
  font-size:var(--ftb-text-base);font-weight:var(--ftb-fw-semi);
  color:var(--ftb-text);cursor:pointer}
.ftb-cron-builder summary:focus-visible{outline:2px solid var(--ftb-primary);outline-offset:2px}
.ftb-cron-builder-grid{display:grid;gap:var(--ftb-space-4);
  grid-template-columns:1fr;margin-top:var(--ftb-space-4)}
@media (min-width:600px){
  .ftb-cron-builder-grid{grid-template-columns:repeat(5,1fr)}
}
.ftb-tool-cron .ftb-cron-builder-grid .ftb-field{margin-bottom:0}
.ftb-tool-cron input[type=text].ftb-cron-bfield{font-family:var(--ftb-mono);
  font-size:var(--ftb-text-code);text-align:center}
.ftb-cron-builder-note{margin:var(--ftb-space-4) 0 0;font-size:var(--ftb-text-sm);
  color:var(--ftb-text-muted);line-height:var(--ftb-lh-snug)}
/* Under Quartz/EventBridge the five boxes would be labelled wrongly, so the
   builder is visibly disabled rather than silently misleading. */
.ftb-cron-builder.is-disabled{opacity:.55}

/* ---- Field-by-field table ---- */
.ftb-cron-fields{margin-top:var(--ftb-space-8)}
.ftb-cron-table{width:100%;border-collapse:collapse;font-size:var(--ftb-text-sm)}
.ftb-cron-table th,.ftb-cron-table td{padding:var(--ftb-space-3) var(--ftb-space-4);
  text-align:left;border-bottom:1px solid var(--ftb-border);vertical-align:top;
  line-height:var(--ftb-lh-snug)}
.ftb-cron-table th{font-weight:var(--ftb-fw-semi);background:var(--ftb-surface-2);
  white-space:nowrap}
.ftb-cron-table code{font-family:var(--ftb-mono);font-size:var(--ftb-text-code)}
