/* THC Field Trips: uses the child theme's palette tokens with the same fallbacks as
   THC Field Tools (rf.css). The child theme may restyle any .thc-ftp* class. */

.thc-ftp {
  --ftp-canvas: var(--wp--preset--color--base, #f7f1e4);
  --ftp-raised: var(--wp--preset--color--accent-5, #fcf8ef);
  --ftp-muted: var(--wp--preset--color--accent-4, #ece4d9);
  --ftp-border: var(--wp--preset--color--accent-6, #d9d0bc);
  --ftp-text: var(--wp--preset--color--contrast, #332d25);
  --ftp-leaf: var(--wp--preset--color--accent-1, #5e7d53);
  --ftp-deep: var(--wp--preset--color--accent-3, #3f5c3b);
  --ftp-sage: var(--wp--preset--color--accent-2, #a8b79a);
  --ftp-stroke: var(--wp--preset--color--control-stroke, #8a7f66);
  --ftp-radius: 12px;
  --ftp-yes: #2f5e33;
  --ftp-no: #8f2f22;
  --ftp-unk: #6b5a1f;
  color: var(--ftp-text);
  margin-block: var(--wp--preset--spacing--md, 1rem) 0;
}
.thc-ftp *, .thc-ftp *::before, .thc-ftp *::after { box-sizing: border-box; }
.thc-ftp__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.thc-ftp__lead { margin: 0 0 var(--wp--preset--spacing--md, 1rem); font-size: var(--wp--preset--font-size--large, 1.25rem); }
.thc-ftp__muted { color: var(--ftp-deep); font-weight: 400; font-size: .92em; }

/* ---------- form ---------- */
.thc-ftp__form { background: var(--ftp-raised); border: 1px solid var(--ftp-border); border-radius: var(--ftp-radius); padding: var(--wp--preset--spacing--lg, 1.5rem); display: grid; gap: 1rem; }
.thc-ftp__group { border: 0; border-top: 1px solid var(--ftp-border); margin: 0; padding: 1rem 0 0; min-width: 0; }
.thc-ftp__group--where { border-top: 0; padding-top: 0; }
.thc-ftp__group > legend, .thc-ftp__more > summary { font-weight: 700; color: var(--ftp-deep); padding: 0; margin-bottom: .6rem; font-size: 1.05em; }
.thc-ftp__more > summary { cursor: pointer; }
.thc-ftp__row { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: flex-end; margin-bottom: .75rem; }
.thc-ftp__field { display: flex; flex-direction: column; gap: .3rem; min-width: 0; flex: 1 1 10rem; }
.thc-ftp__field--place { flex: 3 1 16rem; }
.thc-ftp__field--locate { flex: 0 0 auto; }
.thc-ftp__field--inline { margin-top: .6rem; max-width: 24rem; }
.thc-ftp__label { font-size: var(--wp--preset--font-size--small, .875rem); font-weight: 600; color: var(--ftp-deep); }
.thc-ftp__hint { margin: 0; font-size: var(--wp--preset--font-size--small, .875rem); color: var(--ftp-deep); }
.thc-ftp input[type="text"], .thc-ftp input[type="date"], .thc-ftp input[type="time"], .thc-ftp select {
  font: inherit; color: inherit; background: var(--ftp-canvas); border: 1px solid var(--ftp-stroke); border-radius: 10px; padding: .55em .8em; min-width: 0; width: 100%; min-height: 44px;
}
.thc-ftp input:focus-visible, .thc-ftp select:focus-visible, .thc-ftp button:focus-visible, .thc-ftp a:focus-visible, .thc-ftp summary:focus-visible { outline: 3px solid var(--ftp-leaf); outline-offset: 2px; }
.thc-ftp__checks { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: .5rem 1.25rem; }
.thc-ftp__checks label, .thc-ftp__check-block { display: flex; gap: .55em; align-items: flex-start; min-height: 44px; padding: .35em 0; cursor: pointer; }
.thc-ftp input[type="checkbox"], .thc-ftp input[type="radio"] { width: 1.25em; height: 1.25em; margin: .15em 0 0; flex: 0 0 auto; accent-color: var(--ftp-leaf); }
.thc-ftp__choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .6rem; }
.thc-ftp__choice { display: flex; gap: .6em; align-items: flex-start; border: 1px solid var(--ftp-border); background: var(--ftp-canvas); border-radius: 10px; padding: .7em .85em; cursor: pointer; }
.thc-ftp__choice:has(input:checked) { border-color: var(--ftp-leaf); box-shadow: inset 0 0 0 1px var(--ftp-leaf); }
.thc-ftp__choice span { display: flex; flex-direction: column; gap: .15em; font-size: .95em; }
.thc-ftp__actions { display: flex; flex-wrap: wrap; gap: .6rem 1rem; align-items: center; }
.thc-ftp__btn { font: inherit; font-weight: 600; border: 1px solid var(--ftp-leaf); background: var(--ftp-leaf); color: #fff; border-radius: 999px; padding: .6em 1.4em; min-height: 44px; cursor: pointer; }
.thc-ftp__btn:hover { background: var(--ftp-deep); border-color: var(--ftp-deep); }
.thc-ftp__btn--ghost { background: transparent; color: var(--ftp-deep); border-color: var(--ftp-stroke); }
.thc-ftp__btn--ghost:hover { background: var(--ftp-muted); color: var(--ftp-deep); }
.thc-ftp__status { font-size: var(--wp--preset--font-size--small, .875rem); color: var(--ftp-deep); }
.thc-ftp__status.is-error { color: var(--ftp-no); font-weight: 600; }

/* ---------- results ---------- */
.thc-ftp__results { margin-top: var(--wp--preset--spacing--lg, 1.5rem); scroll-margin-top: 6rem; }
.thc-ftp__results:focus { outline: none; }
.thc-ftp__h, .thc-ftp__h2 { margin: 0 0 .6em; overflow-wrap: anywhere; }
.thc-ftp__daygrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; }
.thc-ftp__panel, .thc-ftp__night, .thc-ftp__before, .thc-ftp__empty { background: var(--ftp-raised); border: 1px solid var(--ftp-border); border-radius: var(--ftp-radius); padding: 1rem 1.25rem; }
.thc-ftp__panel h3, .thc-ftp__night h3 { margin: 0 0 .5em; font-size: 1.1em; }
.thc-ftp__panel p, .thc-ftp__night p { margin: 0 0 .6em; }
.thc-ftp__night { margin-top: 1rem; }
.thc-ftp__notes, .thc-ftp__night ul, .thc-ftp__before ul, .thc-ftp__empty ul { margin: .3em 0 .6em; padding-left: 1.2em; }
.thc-ftp__notes li, .thc-ftp__night li, .thc-ftp__before li { margin-bottom: .35em; }
.thc-ftp__taxa { list-style: none; margin: 0 0 .6em; padding: 0; }
.thc-ftp__taxa li { padding: .2em 0; border-bottom: 1px dotted var(--ftp-border); }
.thc-ftp__src, .thc-ftp__attr { font-size: var(--wp--preset--font-size--small, .875rem); color: var(--ftp-deep); }
.thc-ftp__flags { display: flex; flex-wrap: wrap; gap: .4em; }
.thc-ftp__flag { display: inline-block; font-size: .85em; font-weight: 700; border-radius: 999px; padding: .15em .7em; border: 1px solid currentColor; }
.thc-ftp__flag--heat { color: #8f3a12; }
.thc-ftp__flag--cold { color: #1f4f7a; }
.thc-ftp__flag--rain { color: #2d5a73; }
.thc-ftp__flag--wind { color: #5b4b7a; }
.thc-ftp__flag--dark { display: block; border-radius: 10px; padding: .6em .8em; font-weight: 600; color: var(--ftp-text); background: color-mix(in srgb, var(--ftp-sage) 30%, var(--ftp-raised)); border-color: var(--ftp-sage); }
.thc-ftp__nv { color: var(--ftp-unk); }
.thc-ftp__loading { padding: 1rem 0; font-style: italic; color: var(--ftp-deep); }
.thc-ftp__notice { padding: .7em 1em; border-radius: 10px; border: 1px solid var(--ftp-sage); background: color-mix(in srgb, var(--ftp-sage) 25%, var(--ftp-raised)); }
.thc-ftp__notice.is-error { border-color: var(--ftp-no); color: var(--ftp-no); }
.thc-ftp__sites { margin-top: var(--wp--preset--spacing--lg, 1.5rem); }
.thc-ftp__legend { font-size: var(--wp--preset--font-size--small, .875rem); }

.thc-ftp__cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.thc-ftp__card { background: var(--ftp-raised); border: 1px solid var(--ftp-border); border-radius: var(--ftp-radius); padding: 1rem 1.25rem 1.1rem; min-width: 0; }
.thc-ftp__card-head h3 { margin: 0; font-size: 1.25em; overflow-wrap: anywhere; }
.thc-ftp__meta { margin: .2em 0 .6em; color: var(--ftp-deep); font-size: var(--wp--preset--font-size--small, .875rem); }
.thc-ftp__warn { margin: 0 0 .6em; padding: .5em .8em; border-left: 4px solid var(--ftp-unk); background: color-mix(in srgb, #e9d9a6 35%, var(--ftp-raised)); border-radius: 0 8px 8px 0; }
.thc-ftp__likely { margin: 0 0 .8em; }
.thc-ftp__gridwrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.thc-ftp__grid { width: 100%; border-collapse: collapse; font-size: .95em; }
.thc-ftp__grid th, .thc-ftp__grid td { text-align: left; vertical-align: top; padding: .55em .6em; border-top: 1px solid var(--ftp-border); }
.thc-ftp__grid thead th { font-size: var(--wp--preset--font-size--small, .875rem); color: var(--ftp-deep); border-top: 0; }
.thc-ftp__grid tbody th { font-weight: 600; width: 30%; }
.thc-ftp__gr.is-need { background: color-mix(in srgb, var(--ftp-sage) 16%, transparent); }
.thc-ftp__needmark { display: inline-block; font-size: .72em; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; color: var(--ftp-deep); border: 1px solid var(--ftp-deep); border-radius: 4px; padding: 0 .35em; margin-left: .25em; vertical-align: .1em; }
.thc-ftp__ans { display: inline-block; font-weight: 700; border-radius: 6px; padding: .05em .5em; margin-right: .4em; }
.thc-ftp__ans--yes { color: #fff; background: var(--ftp-yes); }
.thc-ftp__ans--no { color: #fff; background: var(--ftp-no); }
.thc-ftp__ans--unknown { color: var(--ftp-unk); background: transparent; border: 1.5px dashed var(--ftp-unk); }
.thc-ftp__why { display: block; margin-top: .25em; font-size: .9em; }
.thc-ftp__prov { font-size: .88em; }
.thc-ftp__badge { display: inline-block; border-radius: 999px; padding: .05em .6em; border: 1px solid var(--ftp-stroke); background: var(--ftp-canvas); white-space: nowrap; }
.thc-ftp__badge--official { border-color: var(--ftp-deep); }
.thc-ftp__badge--curated { border-color: var(--ftp-leaf); background: color-mix(in srgb, var(--ftp-sage) 30%, var(--ftp-canvas)); }
.thc-ftp__badge--placeholder { border-style: dashed; }
.thc-ftp__conf { white-space: nowrap; font-weight: 600; }
.thc-ftp__conf--high { color: var(--ftp-yes); }
.thc-ftp__conf--medium { color: var(--ftp-deep); }
.thc-ftp__conf--low { color: var(--ftp-unk); }
.thc-ftp__checked { display: block; margin-top: .2em; color: var(--ftp-deep); }
.thc-ftp__links { margin: .8em 0 0; font-size: var(--wp--preset--font-size--small, .875rem); }
.thc-ftp__before { margin-top: var(--wp--preset--spacing--lg, 1.5rem); }
.thc-ftp__rubric summary { cursor: pointer; font-weight: 600; min-height: 44px; display: flex; align-items: center; }

@supports not (color: color-mix(in srgb, red 50%, blue)) {
  .thc-ftp__flag--dark, .thc-ftp__notice { background: #e8ecdf; }
  .thc-ftp__warn { background: #f6efd9; }
  .thc-ftp__gr.is-need { background: #eef1e8; }
}

/* Phones: the grid becomes stacked rows so nothing scrolls sideways. */
@media (max-width: 640px) {
  .thc-ftp__form { padding: 1rem; }
  .thc-ftp__card { padding: .9rem; }
  .thc-ftp__grid thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .thc-ftp__grid, .thc-ftp__grid tbody, .thc-ftp__grid tr, .thc-ftp__grid th, .thc-ftp__grid td { display: block; width: 100%; }
  .thc-ftp__grid tr { border-top: 1px solid var(--ftp-border); padding: .5em 0; }
  .thc-ftp__grid th, .thc-ftp__grid td { border-top: 0; padding: .15em .2em; }
  .thc-ftp__grid tbody th { width: 100%; }
}

@media print {
  .thc-ftp__form, .thc-ftp__links { display: none; }
  .thc-ftp__card { break-inside: avoid; }
}

/* Label text stays one block next to its box (hint text wraps under it, not beside it). */
.thc-ftp__checks label > span, .thc-ftp__check-block > span { display: block; }
.thc-ftp__checks .thc-ftp__muted { display: block; font-size: .88em; }
.thc-ftp__more-rows { margin-top: .5rem; }
.thc-ftp__more-rows > summary { cursor: pointer; font-weight: 600; color: var(--ftp-deep); min-height: 44px; display: flex; align-items: center; }
