Simplify hero header and strip extra copy
Browse filesReplace dark cover with a light header (Q mark + title + OSU NLP byline
link), drop subtitle/release tagline, and remove "Section 02/03 ·" prefixes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
app.py
CHANGED
|
@@ -267,105 +267,55 @@ gradio-app > div {
|
|
| 267 |
white-space: pre-wrap !important;
|
| 268 |
}
|
| 269 |
|
| 270 |
-
/* === Quest-style
|
| 271 |
-
.quest-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
box-shadow: var(--q-shadow);
|
| 277 |
-
padding: 14px;
|
| 278 |
margin: 8px 0 24px;
|
| 279 |
-
|
| 280 |
-
|
|
|
|
|
|
|
| 281 |
}
|
| 282 |
-
.quest-
|
| 283 |
display: grid;
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
|
|
|
| 293 |
}
|
| 294 |
-
.quest-
|
| 295 |
-
grid-column: span 3;
|
| 296 |
-
min-height: 220px;
|
| 297 |
display: flex;
|
| 298 |
flex-direction: column;
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
radial-gradient(ellipse at top right, rgba(190, 91, 43, 0.22), transparent 48%),
|
| 302 |
-
radial-gradient(ellipse at bottom left, rgba(11, 158, 138, 0.18), transparent 48%),
|
| 303 |
-
rgba(255, 255, 255, 0.04);
|
| 304 |
-
}
|
| 305 |
-
.quest-cover-kicker {
|
| 306 |
-
display: flex;
|
| 307 |
-
align-items: center;
|
| 308 |
-
gap: 12px;
|
| 309 |
-
color: rgba(255, 255, 255, 0.55);
|
| 310 |
-
font-size: 0.68rem;
|
| 311 |
-
font-weight: 700;
|
| 312 |
-
letter-spacing: 0.14em;
|
| 313 |
-
text-transform: uppercase;
|
| 314 |
}
|
| 315 |
-
.quest-
|
| 316 |
-
|
| 317 |
-
background: var(--q-accent);
|
| 318 |
-
box-shadow: 0 0 0 3px rgba(190, 91, 43, 0.22);
|
| 319 |
-
}
|
| 320 |
-
.quest-cover-title {
|
| 321 |
font-family: "Source Serif 4", "Source Serif Pro", ui-serif, Georgia, serif;
|
| 322 |
font-weight: 600;
|
| 323 |
-
font-size: clamp(1.
|
| 324 |
-
line-height: 1.
|
| 325 |
-
letter-spacing: -0.
|
| 326 |
-
color:
|
| 327 |
-
margin: 14px 0 8px;
|
| 328 |
-
max-width: 26ch;
|
| 329 |
-
}
|
| 330 |
-
.quest-cover-subtitle {
|
| 331 |
-
color: rgba(255, 255, 255, 0.72);
|
| 332 |
-
font-size: 1rem;
|
| 333 |
-
line-height: 1.6;
|
| 334 |
-
max-width: 48ch;
|
| 335 |
-
}
|
| 336 |
-
.quest-cover-panel span.label {
|
| 337 |
-
display: block;
|
| 338 |
-
margin-bottom: 8px;
|
| 339 |
-
color: rgba(255, 255, 255, 0.45);
|
| 340 |
-
font-size: 0.66rem;
|
| 341 |
-
font-weight: 700;
|
| 342 |
-
letter-spacing: 0.14em;
|
| 343 |
-
text-transform: uppercase;
|
| 344 |
-
}
|
| 345 |
-
.quest-cover-panel strong.headline {
|
| 346 |
-
display: block;
|
| 347 |
-
font-family: "Source Serif 4", "Source Serif Pro", ui-serif, Georgia, serif;
|
| 348 |
-
font-weight: 600;
|
| 349 |
-
font-size: 1.15rem;
|
| 350 |
-
line-height: 1.15;
|
| 351 |
-
color: #FFFFFF;
|
| 352 |
-
max-width: 20ch;
|
| 353 |
}
|
| 354 |
-
.quest-
|
| 355 |
-
|
| 356 |
-
|
| 357 |
-
|
| 358 |
-
padding: 6px 14px;
|
| 359 |
-
border: 1px solid rgba(255, 255, 255, 0.16);
|
| 360 |
-
border-radius: 999px;
|
| 361 |
-
color: rgba(255, 255, 255, 0.82);
|
| 362 |
-
font-size: 0.78rem;
|
| 363 |
-
font-weight: 600;
|
| 364 |
-
letter-spacing: 0.04em;
|
| 365 |
text-decoration: none;
|
| 366 |
width: fit-content;
|
|
|
|
| 367 |
}
|
| 368 |
-
.quest-
|
| 369 |
|
| 370 |
/* === Cards (section-card) =============================================== */
|
| 371 |
.section-card {
|
|
@@ -1608,43 +1558,16 @@ with gr.Blocks(
|
|
| 1608 |
css=CUSTOM_CSS,
|
| 1609 |
fill_width=True,
|
| 1610 |
) as demo:
|
| 1611 |
-
# --- Quest-style
|
| 1612 |
gr.HTML(
|
| 1613 |
"""
|
| 1614 |
-
<
|
| 1615 |
-
<
|
| 1616 |
-
|
| 1617 |
-
|
| 1618 |
-
|
| 1619 |
-
<span>Quest · OSU NLP Group</span>
|
| 1620 |
-
</div>
|
| 1621 |
-
<div>
|
| 1622 |
-
<h1 class="quest-cover-title">Deep Research Agent, live in your browser.</h1>
|
| 1623 |
-
<p class="quest-cover-subtitle">
|
| 1624 |
-
A fully open recipe for training deep research agents — now
|
| 1625 |
-
hosted as an interactive Space. Ask a question, watch the agent
|
| 1626 |
-
search, read, and reason across sources, then return a grounded
|
| 1627 |
-
answer.
|
| 1628 |
-
</p>
|
| 1629 |
-
</div>
|
| 1630 |
-
<a class="quest-cover-byline" href="https://nlp.osu.edu/" target="_blank" rel="noopener noreferrer">
|
| 1631 |
-
<span>Built by OSU NLP →</span>
|
| 1632 |
-
</a>
|
| 1633 |
-
</div>
|
| 1634 |
-
<div class="quest-cover-panel">
|
| 1635 |
-
<span class="label">Data synthesis</span>
|
| 1636 |
-
<strong class="headline">Objective and open-ended tasks</strong>
|
| 1637 |
-
</div>
|
| 1638 |
-
<div class="quest-cover-panel">
|
| 1639 |
-
<span class="label">Memory management</span>
|
| 1640 |
-
<strong class="headline">Structured long-horizon reasoning</strong>
|
| 1641 |
-
</div>
|
| 1642 |
-
<div class="quest-cover-panel">
|
| 1643 |
-
<span class="label">Training recipe</span>
|
| 1644 |
-
<strong class="headline">Mid-training, SFT, and RL</strong>
|
| 1645 |
-
</div>
|
| 1646 |
</div>
|
| 1647 |
-
</
|
| 1648 |
"""
|
| 1649 |
)
|
| 1650 |
|
|
@@ -1655,7 +1578,6 @@ with gr.Blocks(
|
|
| 1655 |
gr.HTML(
|
| 1656 |
'<div class="section-heading">Ask the agent</div>'
|
| 1657 |
'<div class="hero-heading">What can I research for you?</div>'
|
| 1658 |
-
'<p class="hero-subtitle">Describe a question, claim, or open-ended prompt. The agent will search the web, visit sources, and synthesize a grounded answer.</p>'
|
| 1659 |
)
|
| 1660 |
question = gr.Textbox(
|
| 1661 |
show_label=False,
|
|
@@ -1669,7 +1591,7 @@ with gr.Blocks(
|
|
| 1669 |
|
| 1670 |
with gr.Group(elem_classes="section-card"):
|
| 1671 |
gr.HTML(
|
| 1672 |
-
'<div class="section-heading">
|
| 1673 |
'<div class="example-note">Each prompt shows the kind of query it represents. Click one to auto-fill.</div>'
|
| 1674 |
)
|
| 1675 |
with gr.Column(elem_classes="example-buttons"):
|
|
@@ -1679,7 +1601,7 @@ with gr.Blocks(
|
|
| 1679 |
]
|
| 1680 |
|
| 1681 |
with gr.Group(elem_classes="section-card"):
|
| 1682 |
-
gr.HTML('<div class="section-heading">
|
| 1683 |
with gr.Tabs():
|
| 1684 |
with gr.TabItem("Result"):
|
| 1685 |
answer = gr.Markdown(label="Final Answer")
|
|
@@ -1691,7 +1613,6 @@ with gr.Blocks(
|
|
| 1691 |
gr.HTML(
|
| 1692 |
f"""
|
| 1693 |
<div class="section-heading">Open release</div>
|
| 1694 |
-
<div class="hero-heading" style="font-size:1.2rem;margin-bottom:12px;">Data, code, and weights — all public.</div>
|
| 1695 |
<div class="icon-grid">
|
| 1696 |
<a class="icon-link" href="{PAPER_URL}" target="_blank" rel="noopener noreferrer">Paper</a>
|
| 1697 |
<a class="icon-link" href="{CODE_URL}" target="_blank" rel="noopener noreferrer">Code</a>
|
|
|
|
| 267 |
white-space: pre-wrap !important;
|
| 268 |
}
|
| 269 |
|
| 270 |
+
/* === Quest-style header ================================================= */
|
| 271 |
+
.quest-header {
|
| 272 |
+
display: flex;
|
| 273 |
+
align-items: center;
|
| 274 |
+
gap: 18px;
|
| 275 |
+
padding: 18px 22px;
|
|
|
|
|
|
|
| 276 |
margin: 8px 0 24px;
|
| 277 |
+
border: 1px solid var(--q-line);
|
| 278 |
+
border-radius: var(--q-radius-lg);
|
| 279 |
+
background: var(--q-paper);
|
| 280 |
+
box-shadow: var(--q-shadow-card);
|
| 281 |
}
|
| 282 |
+
.quest-header-mark {
|
| 283 |
display: grid;
|
| 284 |
+
place-items: center;
|
| 285 |
+
width: 48px;
|
| 286 |
+
height: 48px;
|
| 287 |
+
flex-shrink: 0;
|
| 288 |
+
border-radius: 12px;
|
| 289 |
+
background: var(--q-text);
|
| 290 |
+
color: #FFFFFF;
|
| 291 |
+
font-family: "Source Serif 4", "Source Serif Pro", ui-serif, Georgia, serif;
|
| 292 |
+
font-weight: 700;
|
| 293 |
+
font-size: 1.55rem;
|
| 294 |
}
|
| 295 |
+
.quest-header-text {
|
|
|
|
|
|
|
| 296 |
display: flex;
|
| 297 |
flex-direction: column;
|
| 298 |
+
gap: 4px;
|
| 299 |
+
min-width: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 300 |
}
|
| 301 |
+
.quest-header-title {
|
| 302 |
+
margin: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
font-family: "Source Serif 4", "Source Serif Pro", ui-serif, Georgia, serif;
|
| 304 |
font-weight: 600;
|
| 305 |
+
font-size: clamp(1.25rem, 2vw, 1.75rem);
|
| 306 |
+
line-height: 1.2;
|
| 307 |
+
letter-spacing: -0.01em;
|
| 308 |
+
color: var(--q-text);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 309 |
}
|
| 310 |
+
.quest-header-byline {
|
| 311 |
+
color: var(--q-muted);
|
| 312 |
+
font-size: 0.9rem;
|
| 313 |
+
font-weight: 500;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 314 |
text-decoration: none;
|
| 315 |
width: fit-content;
|
| 316 |
+
transition: color 140ms ease;
|
| 317 |
}
|
| 318 |
+
.quest-header-byline:hover { color: var(--q-accent); }
|
| 319 |
|
| 320 |
/* === Cards (section-card) =============================================== */
|
| 321 |
.section-card {
|
|
|
|
| 1558 |
css=CUSTOM_CSS,
|
| 1559 |
fill_width=True,
|
| 1560 |
) as demo:
|
| 1561 |
+
# --- Quest-style header (Q mark + title + byline) ---
|
| 1562 |
gr.HTML(
|
| 1563 |
"""
|
| 1564 |
+
<header class="quest-header">
|
| 1565 |
+
<span class="quest-header-mark" aria-hidden="true">Q</span>
|
| 1566 |
+
<div class="quest-header-text">
|
| 1567 |
+
<h1 class="quest-header-title">Quest: A Fully Open Recipe for Training Search Agents</h1>
|
| 1568 |
+
<a class="quest-header-byline" href="https://x.com/osunlp" target="_blank" rel="noopener noreferrer">built by OSU NLP Group</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1569 |
</div>
|
| 1570 |
+
</header>
|
| 1571 |
"""
|
| 1572 |
)
|
| 1573 |
|
|
|
|
| 1578 |
gr.HTML(
|
| 1579 |
'<div class="section-heading">Ask the agent</div>'
|
| 1580 |
'<div class="hero-heading">What can I research for you?</div>'
|
|
|
|
| 1581 |
)
|
| 1582 |
question = gr.Textbox(
|
| 1583 |
show_label=False,
|
|
|
|
| 1591 |
|
| 1592 |
with gr.Group(elem_classes="section-card"):
|
| 1593 |
gr.HTML(
|
| 1594 |
+
'<div class="section-heading">Try examples</div>'
|
| 1595 |
'<div class="example-note">Each prompt shows the kind of query it represents. Click one to auto-fill.</div>'
|
| 1596 |
)
|
| 1597 |
with gr.Column(elem_classes="example-buttons"):
|
|
|
|
| 1601 |
]
|
| 1602 |
|
| 1603 |
with gr.Group(elem_classes="section-card"):
|
| 1604 |
+
gr.HTML('<div class="section-heading">Output</div>')
|
| 1605 |
with gr.Tabs():
|
| 1606 |
with gr.TabItem("Result"):
|
| 1607 |
answer = gr.Markdown(label="Final Answer")
|
|
|
|
| 1613 |
gr.HTML(
|
| 1614 |
f"""
|
| 1615 |
<div class="section-heading">Open release</div>
|
|
|
|
| 1616 |
<div class="icon-grid">
|
| 1617 |
<a class="icon-link" href="{PAPER_URL}" target="_blank" rel="noopener noreferrer">Paper</a>
|
| 1618 |
<a class="icon-link" href="{CODE_URL}" target="_blank" rel="noopener noreferrer">Code</a>
|