.jf { max-width:1180px; margin-inline:auto; color:var(--ink); }
.jf [hidden] { display:none!important; }
.jf-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--sp-4); padding-bottom:var(--sp-5); border-bottom:1px solid var(--line); }
.jf-heading h2 { font-size:clamp(2rem,4vw,3rem); margin:var(--sp-2) 0; letter-spacing:-.04em; }
.jf-heading p { margin:0; color:var(--stone); }
.jf-eyebrow { font-size:var(--text-micro); text-transform:uppercase; letter-spacing:.13em; font-weight:700; color:var(--teal); }
.jf-local { background:var(--teal-quiet); color:var(--teal-hover); border:1px solid var(--seaglass); border-radius:20px; padding:8px 12px; font-size:var(--text-micro); font-weight:600; }
.jf-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--sp-5); align-items:start; }
.jf-baseline { display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-4); justify-content:space-between; padding:var(--sp-4); border:1px solid var(--seaglass); border-radius:12px; background:var(--teal-quiet); margin-block:var(--sp-4); }
.jf-baseline>div { flex:1; min-width:200px; }
.jf-baseline p { margin:var(--sp-2) 0 0; font-size:var(--text-micro); }
.jf-parameter { padding:var(--sp-3); border-left:3px solid var(--teal); background:var(--linen); margin-block:var(--sp-3); }
.jf-parameter h3 { margin:0; }
.jf-panel { min-width:0; border:1px solid var(--line); background:var(--cloud); border-radius:14px; padding:var(--sp-5); margin-block:var(--sp-4); overflow-wrap:anywhere; }
.jf-panel h2 { font-size:var(--text-card); margin:0 0 var(--sp-3); }
.jf-panel h3 { font-size:var(--text-body); margin-top:var(--sp-5); }
.jf-panel p { font-size:var(--text-small); }
.jf-fields { display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4); }
.jf fieldset { border:0; padding:0; margin:0; min-width:0; }
.jf .field { margin-bottom:var(--sp-4); }
.jf textarea { font-size:var(--text-small); line-height:1.65; resize:vertical; }
.jf-ephemeral { float:right; color:var(--teal-hover); font-size:var(--text-micro); font-weight:400; }
.jf-privacy { border-top:1px solid var(--line); padding-top:var(--sp-4); color:var(--stone); line-height:1.7; }
.jf-score { display:flex; align-items:center; gap:var(--sp-5); padding:var(--sp-5); background:var(--ink); color:var(--cloud); border-radius:12px; }
.jf-score strong { font-size:3rem; letter-spacing:-.05em; line-height:1.1; display:block; color:var(--seaglass); }
.jf-score span { font-size:var(--text-micro); }
.jf-score h3 { margin:0 0 var(--sp-2); color:var(--cloud); }
.jf-score p { margin:0; color:var(--cloud); }
.jf-match { padding:var(--sp-3) 0; border-top:1px solid var(--line); }
.jf-match strong { font-size:var(--text-small); }
.jf-match p { margin:var(--sp-2) 0 0; }
.jf-match small { color:var(--stone); }
.jf-label { display:inline-block; font-size:var(--text-micro); background:var(--teal-quiet); padding:3px 7px; border-radius:5px; margin-left:6px; }
.jf-missing .jf-label { background:var(--warn-bg); color:var(--warn); }
.jf-required-gap { background:var(--warn-bg); color:var(--warn); border:1px solid var(--warn); border-radius:8px; padding:var(--sp-3); }
.jf-detail { border-block:1px solid var(--line); padding-block:var(--sp-3); margin-block:var(--sp-3); }
.jf-detail summary { font-size:var(--text-small); font-weight:600; cursor:pointer; }
.jf-research { display:flex; flex-wrap:wrap; gap:var(--sp-3); margin-top:var(--sp-4); }
.jf-history-head,.jf-pagination { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:var(--sp-3); }
.jf-history table { width:100%; border-collapse:collapse; }
.jf-history th,.jf-history td { padding:var(--sp-3); text-align:left; border-bottom:1px solid var(--line); font-size:var(--text-small); }
.jf-table-wrap { overflow-x:auto; }
.jf-pagination { margin-top:var(--sp-4); }
.jf button:focus-visible,.jf a:focus-visible { outline:3px solid var(--ink); outline-offset:3px; }
.jf button,.jf .btn { min-height:44px; }
@media(max-width:800px) {
  .jf-layout { grid-template-columns:1fr; gap:0; }
  .jf-fields { grid-template-columns:1fr; gap:0; }
  .jf-panel { padding:var(--sp-4); }
  .jf-score { padding:var(--sp-4); gap:var(--sp-4); }
}
