Spaces:
Running
Running
File size: 7,225 Bytes
024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 f341754 024efc3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | /* Page chrome for the standalone builds (FastAPI server + static Space): masthead, ask bar,
example chips, the frame around the stages, footer. Load AFTER panels.css, which owns the
design tokens and everything inside the stage cards and panels.
The Gradio Space never loads this file: it takes panels.css plus gradio.css, because Gradio
draws its own page and the element selectors below (body, select) would restyle its widgets. */
* { box-sizing: border-box; }
body {
margin: 0;
background: var(--bg);
color: var(--ink);
font: 15px/1.55 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
a { color: var(--blue); }
/* ---- masthead ---- */
.masthead {
background: var(--surface);
border-bottom: 1px solid var(--border);
}
.masthead-inner {
max-width: 1360px; margin: 0 auto; padding: 20px 24px;
display: flex; gap: 24px; align-items: flex-start; justify-content: space-between;
flex-wrap: wrap;
}
h1 { margin: 0 0 4px; font-size: 21px; letter-spacing: -0.01em; }
h1 .accent { color: var(--blue); }
.tagline { margin: 0; color: var(--ink-soft); font-size: 13.5px; max-width: 62ch; }
.status {
display: flex; align-items: center; gap: 7px;
font-size: 12.5px; color: var(--ink-soft); white-space: nowrap;
}
.dot {
width: 8px; height: 8px; border-radius: 50%;
background: var(--ink-faint); flex: none;
}
.dot.ok { background: #22c55e; }
.dot.warn { background: #f59e0b; }
.dot.err { background: #ef4444; }
main { max-width: 1360px; margin: 0 auto; padding: 20px 24px 48px; }
/* ---- ask ---- */
.ask {
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius); padding: 16px; margin-bottom: 18px;
}
.ask-row { display: flex; gap: 10px; }
#question {
flex: 1; padding: 11px 13px; font-size: 15px;
border: 1px solid var(--border); border-radius: 8px;
background: var(--bg); color: var(--ink);
}
#question:focus { outline: 2px solid var(--blue); outline-offset: -1px; }
#submit-btn {
padding: 11px 20px; font: inherit; font-size: 14px; font-weight: 600;
background: var(--blue); color: var(--on-blue); border: 0; border-radius: 8px; cursor: pointer;
white-space: nowrap;
}
#submit-btn:hover:not(:disabled) { filter: brightness(1.1); }
#submit-btn:disabled { opacity: 0.55; cursor: not-allowed; }
/* The examples: one row that scrolls sideways. stages.js adds arrow buttons on a laptop. */
.examples-wrap { margin-top: 14px; padding-top: 13px; border-top: 1px solid var(--border); }
#examples { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; column-gap: 6px; }
#examples > .label { grid-column: 1 / -1; display: block; margin-bottom: 8px; font-size: 12.5px; color: var(--ink-soft); }
#examples > .gallery {
--fade-left: 0px; --fade-right: 0px;
display: flex; grid-row: 2; grid-column: 2; flex-wrap: nowrap; gap: 7px; padding: 2px 0;
overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; overscroll-behavior-x: contain;
-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent 100%);
mask-image: linear-gradient(90deg, transparent 0, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent 100%);
}
#examples > .gallery::-webkit-scrollbar { display: none; }
#examples.fade-left > .gallery { --fade-left: 32px; }
#examples.fade-right > .gallery { --fade-right: 32px; }
#examples > .ex-arrow {
display: grid; grid-row: 2; place-items: center; width: 34px; height: 34px; padding: 0;
border: 1px solid var(--border-strong); border-radius: 50%; background: var(--surface); color: var(--ink); cursor: pointer;
}
#examples > .ex-prev { grid-column: 1; }
#examples > .ex-next { grid-column: 3; }
#examples > .ex-arrow:disabled { opacity: 0.35; cursor: default; }
@media (max-width: 759px), (hover: none) {
#examples > .ex-arrow { display: none; }
#examples > .gallery { grid-column: 1 / -1; }
}
.chip {
display: inline-flex; flex: none; align-items: baseline; gap: 6px; max-width: 26em;
font: inherit; font-size: 12.5px; font-weight: 500; scroll-snap-align: start;
padding: 6px 11px; border-radius: 999px; cursor: pointer;
background: var(--blue-soft); color: var(--blue);
border: 1px solid transparent; text-align: left; white-space: nowrap;
}
.chip:hover { border-color: var(--blue); }
.chip .chip-cat {
flex: none; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.75;
}
.chip .chip-q { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* Search settings: one line until opened. */
.settings { margin-top: 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); }
.settings > summary {
padding: 9px 12px; font-size: 13px; font-weight: 600; color: var(--ink-soft); cursor: pointer;
}
.settings-body {
display: flex; gap: 16px; align-items: center; flex-wrap: wrap;
padding: 2px 12px 12px; font-size: 12.5px; color: var(--ink-soft);
}
.settings-body label { display: flex; align-items: center; gap: 6px; }
.settings select {
font: inherit; padding: 4px 7px; border-radius: 6px;
border: 1px solid var(--border); background: var(--surface); color: var(--ink);
}
.budget { margin: 10px 0 0; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--ink-faint); }
/* Mode switching: the same markup serves the FastAPI build and the static Space, so each
mode hides the controls the other one owns. `static-mode` is set by app.js at startup. */
.static-only { display: none; }
body.static-mode .static-only { display: block; }
body.static-mode .server-only { display: none; }
.static-note {
margin: 13px 0 0; padding: 11px 13px; border-radius: 8px;
font-size: 12.5px; line-height: 1.6; color: var(--ink-soft);
background: var(--blue-soft); border: 1px solid var(--border);
}
.static-note code {
font-family: var(--mono); font-size: 11.5px;
background: var(--surface); padding: 1px 5px; border-radius: 4px; border: 1px solid var(--border);
}
body.static-mode .chip[hidden] { display: none; }
/* ---- the stages: one card around the stage cards and the open panel ---- */
.pipe {
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius); padding: 18px 20px 20px; min-width: 0; box-shadow: var(--shadow);
}
#panel-answer { display: grid; gap: 14px; }
/* The answer itself, beside its sources on a wide screen. Plain text: this build does not
render Markdown yet. */
.answer-row { display: grid; grid-template-columns: minmax(0, 3fr) minmax(260px, 2fr); gap: 14px; align-items: start; }
.answer-row:not(:has(.sp-answer-side)) { display: none; }
.answer-text {
min-width: 0; padding: 16px 18px; border: 1px solid var(--border); border-radius: 12px;
background: var(--surface); font-size: 15px; line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere;
}
@media (max-width: 759px) {
main { padding: 14px 14px 40px; }
.pipe { padding: 14px 12px 16px; }
.answer-row { grid-template-columns: minmax(0, 1fr); }
}
footer {
margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--border);
font-size: 12px; color: var(--ink-faint);
}
footer p { margin: 0; max-width: 90ch; }
|