/* Flora Forecast forms, gate and settings (B6). Uses the app.css tokens only. Plain app UI: sentence-case
   labels, 48 px inputs, 1 px input lines, no shadows, no blur, radii only 999 / 16 / 3 / 50% / 0. */

/* ---------- age gate (A0, A1) ---------- */
.gate{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:32px var(--gutter) 40px;background:var(--bg)}
.gate-in{display:flex;flex-direction:column;align-items:stretch;width:100%;max-width:480px}
.gate-in>.np{align-self:center;margin-bottom:36px}
.gate-title{font-family:var(--serif);font-weight:500;font-size:30px;line-height:1.1;letter-spacing:-.01em;color:var(--fg);text-wrap:balance}
.gate-title:focus{outline:none}
.gate-form .ff-field{margin-top:20px}
.gate-form .gate-year-row{margin-top:24px}
.gate-year{max-width:200px;font-family:var(--mono);font-weight:500;letter-spacing:.06em}
.gate-go{margin-top:28px}
.gate-contact{margin-top:20px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.45;color:var(--meta);text-align:center}
.gate-stop .gate-title{text-align:center}
.gate-line{margin-top:16px;font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.5;color:var(--dek);text-align:center}

/* ---------- page frame (Grows, Your data, About, grow form) ---------- */
.ff-page{padding-block:8px 32px}
.ff-col{width:100%;max-width:calc(760px + 2 * var(--gutter));margin-inline:auto;padding-inline:max(var(--gutter),env(safe-area-inset-left)) max(var(--gutter),env(safe-area-inset-right))}
.ff-page-form .ff-col{max-width:calc(640px + 2 * var(--gutter))}
.ff-h1{margin-top:20px;font-family:var(--sans);font-weight:600;font-size:24px;line-height:1.2;color:var(--fg)}
.ff-h2{margin-top:32px;padding-bottom:10px;font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);line-height:1.3;color:var(--dek)}
.ff-text{font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.5;color:var(--body)}
.ff-meta{font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.5;color:var(--meta)}
.ff-lines{margin-top:16px}
.ff-lines .ff-text+.ff-text{margin-top:12px}
.ff-page .ff-text+.ff-text,.ff-page .ff-text+.ff-meta,.ff-page .ff-meta+.ff-text{margin-top:12px}
.ff-page .ff-h1+.ff-text{margin-top:12px}
.ff-actions-inline{margin-top:20px}
.ff-actions-stack{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:28px}
.ff-about-np{display:flex;justify-content:center;padding:20px var(--gutter) 0}
.ab-citation a{white-space:nowrap}

/* ---------- fields ---------- */
.ff-form .ff-field{margin-top:22px}
.ff-label{display:block;margin-bottom:8px;font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);line-height:1.3;color:var(--fg)}
.ff-help{margin:-2px 0 8px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.45;color:var(--meta)}
.ff-input+.ff-help,.ff-select+.ff-help{margin:8px 0 0}
.ff-err{margin-top:8px;font-family:var(--sans);font-weight:600;font-size:13px;line-height:1.45;color:var(--high)}
.ff-input,.ff-select{display:block;width:100%;min-height:48px;margin:0;padding:0 14px;border:1px solid var(--input-line);border-radius:0;background:var(--bg);color:var(--fg);font-family:var(--sans);font-weight:500;font-size:var(--fs-input);line-height:1.4;color-scheme:dark}
.ff-input::placeholder{color:var(--meta)}
.ff-select{padding-right:10px}
.ff-select-sm{min-height:44px}
.ff-num{max-width:120px}
.ff-date{max-width:260px;min-width:0;text-align:left}
/* iPhone Safari centres the date value and can collapse an empty date field; keep it left and full height. */
.ff-date::-webkit-date-and-time-value{min-height:1.4em;text-align:left}
.ff-input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.ff-input:focus-visible,.ff-select:focus-visible{outline:2px solid var(--action);outline-offset:3px}

/* checkbox: 24 px square box, 1 px input line; the native box sits invisibly on top for taps and focus */
.ff-check{position:relative;display:flex;align-items:flex-start;gap:12px;min-height:44px;padding-top:2px;cursor:pointer;font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.45;color:var(--body)}
.ff-check>span:not(.ff-box){padding-top:2px}
.ff-checkbox{position:absolute;left:0;top:2px;width:24px;height:24px;margin:0;opacity:0;cursor:pointer}
.ff-box{position:relative;flex:none;width:24px;height:24px;border:1px solid var(--input-line);border-radius:0;background:var(--bg)}
.ff-checkbox:checked+.ff-box{border-color:var(--fg);background:var(--fg)}
.ff-checkbox:checked+.ff-box::after{content:"";position:absolute;left:8px;top:3px;width:6px;height:12px;border:solid var(--on-action);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.ff-checkbox:focus-visible+.ff-box{outline:2px solid var(--action);outline-offset:3px}

/* segmented (3 columns): selected = 1 px light border + #262626 fill */
.ff-seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:2px;border:1px solid var(--rule-2);border-radius:var(--r-pill)}
.ff-seg-opt{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 8px;border:1px solid transparent;border-radius:var(--r-pill);font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);line-height:1.15;color:var(--dek);text-align:center;cursor:pointer}
.ff-seg-opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.ff-seg-opt:has(input:checked){border-color:var(--fg);background:var(--seg-fill);color:var(--fg)}
.ff-seg-opt:has(input:focus-visible){outline:2px solid var(--action);outline-offset:3px}
.ff-seg-opt:has(input:disabled){color:var(--meta);cursor:not-allowed;text-decoration:line-through;text-decoration-color:var(--rule-2)}
.ff-seg-opt input:disabled{cursor:not-allowed}
.ff-setup-reason{margin:8px 0 0}

/* town search */
.ff-results{margin-top:8px;border-top:1px solid var(--rule)}
.ff-result{display:block;width:100%;min-height:48px;padding:12px 2px;border-bottom:1px solid var(--rule);font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.35;color:var(--fg);text-align:left}
.ff-town-msg{margin:10px 0 0}
.ff-region:empty{display:none}
.ff-region{margin-top:12px}
.ff-region-red{padding:2px 0 2px 12px;border-left:2px solid var(--rule-2);font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);line-height:1.45;color:var(--fg)}
.ff-cond{margin-top:4px}

/* strain ratings */
.ff-rate{margin-top:6px}
.ff-rate-sum{display:inline-flex;align-items:center;min-height:44px;list-style:none;cursor:pointer;font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);color:var(--violet)}
.ff-rate-sum::-webkit-details-marker{display:none}
.ff-rate[open] .ff-rate-sum{color:var(--fg)}
.ff-traits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px;margin-top:4px}
.ff-trait .ff-label{margin-bottom:6px;font-weight:500;font-size:13px;color:var(--dek)}
.ff-traits-note{margin:12px 0 0}

/* stage */
.ff-flower .ff-field{margin-top:18px}
.ff-pistils-note{margin:8px 0 0;color:var(--dek)}

/* plants stepper: 44 px buttons */
.ff-stepper{display:flex;align-items:stretch}
.ff-step{display:flex;align-items:center;justify-content:center;width:48px;min-height:48px;border:1px solid var(--input-line);border-radius:0;font-family:var(--sans);font-weight:500;font-size:22px;line-height:1;color:var(--fg)}
.ff-step:active{background:var(--seg-fill)}
.ff-stepper-val{width:76px;min-width:0;border-left:0;border-right:0;text-align:center;font-family:var(--mono);-moz-appearance:textfield;appearance:textfield}
.ff-num::-webkit-inner-spin-button,.ff-num::-webkit-outer-spin-button,.ff-stepper-val::-webkit-inner-spin-button,.ff-stepper-val::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* save bar: sticky above the tab bar at phone widths, inline from 840 */
.ff-savebar{position:sticky;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));z-index:5;margin-top:32px;padding:12px 0;border-top:1px solid var(--rule);background:var(--bg)}
.ff-savebar .ff-err{margin:0 0 10px}
.ff-delete-row{margin-top:20px}

/* confirm sheets */
.ff-confirm-q{font-family:var(--sans);font-weight:600;font-size:17px;line-height:1.4;color:var(--fg)}
.ff-confirm-btns{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px}

/* ---------- Grows (G1) ---------- */
.gr-list{border-top:1px solid var(--rule)}
.gr-row{border-bottom:1px solid var(--rule)}
.gr-link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:10px 0;color:inherit}
.gr-main{display:flex;flex-direction:column;min-width:0}
.gr-name{font-family:var(--serif);font-weight:500;font-size:var(--fs-title);line-height:1.3;color:var(--fg)}
.gr-ex{margin-left:10px;font-family:var(--sans);font-weight:500;font-size:13px;color:var(--meta)}
.gr-sub{margin-top:2px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.4;color:var(--meta)}
.gr-level{display:flex;flex-direction:column;align-items:flex-end;flex:none;gap:2px;font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);text-align:right}
.gr-risk{font-family:var(--sans);font-weight:500;font-size:13px;color:var(--dek)}

.set-list{border-top:1px solid var(--rule)}
.set-row{border-bottom:1px solid var(--rule)}
.set-link{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;padding:12px 0;font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.3;color:var(--fg);text-align:left}
.set-value{color:var(--meta);text-align:right;overflow-wrap:anywhere}
.set-block{padding:12px 0 14px}
.set-block .set-label{display:block;margin-bottom:10px;font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);color:var(--fg)}
.set-help{margin-top:8px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.45;color:var(--meta)}

/* ---------- phone alerts sheets (N1, N2) ---------- */
.al-body{font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.5;color:var(--body)}
.al-denied{margin-top:12px;font-family:var(--sans);font-weight:500;font-size:var(--fs-ui);line-height:1.5;color:var(--fg)}
.al-btns{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:20px}
.al-row{padding:4px 0 14px;border-bottom:1px solid var(--rule)}
.al-row+.al-row{padding-top:14px}
.al-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;font-family:var(--sans);font-weight:600;font-size:var(--fs-ui);color:var(--fg)}
.al-switch-val{min-width:56px;padding:0 14px;border:1px solid var(--rule-2);border-radius:var(--r-pill);line-height:34px;text-align:center;color:var(--meta)}
.al-switch[aria-checked=true] .al-switch-val{border-color:var(--fg);background:var(--seg-fill);color:var(--fg)}
.al-quiet-sel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.al-quiet .ff-field{margin-top:0}
.al-quiet .ff-help{margin:10px 0 0}
.al-timing{margin:14px 0 0}

@media (min-width:600px){
  .ff-traits{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:840px){
  .ff-page{padding-block:16px 40px}
  .ff-h1{font-size:26px}
  .ff-savebar{position:static;padding:0;border-top:0;background:none}
  .ff-savebar .btn-primary,.ff-actions-inline .btn-primary{display:inline-flex;width:auto;min-width:200px}
  .al-btns{flex-direction:row;justify-content:flex-start}
  .al-btns .btn-primary{width:auto}
}
@media (max-height:479px) and (orientation:landscape){.gate-in>.np{display:none}}
