-
❓ .gitignoreUnknown, 37 B⬇
-
❓ README.mdUnknown, 2.94 kB⬇
-
🌐 admin_panel.phpWeb, 1.54 kB⬇
-
🌐 api.jsWeb, 22.21 kB⬇
-
🌐 api.phpWeb, 9.62 kB⬇
-
🌐 app.jsWeb, 61.42 kB⬇
-
🌐 attachments.jsWeb, 7.30 kB⬇
-
🌐 base.cssWeb, 2.23 kB⬇
-
🌐 choices-editor.jsWeb, 28.11 kB⬇
-
🌐 choices.cssWeb, 1.14 kB⬇
-
🌐 content.jsWeb, 31.08 kB⬇
-
🌐 context.jsWeb, 9.26 kB⬇
-
🌐 conversation-index.jsWeb, 10.74 kB⬇
-
🌐 conversation.cssWeb, 16.33 kB⬇
-
🌐 conversation.jsWeb, 1.11 kB⬇
-
🌐 dialogs.cssWeb, 11.43 kB⬇
-
🌐 diction.jsWeb, 948 B⬇
-
🌐 document-index.jsWeb, 1.04 kB⬇
-
🌐 document-model.jsWeb, 12.88 kB⬇
-
🌐 document.cssWeb, 6.74 kB⬇
-
🌐 document.jsWeb, 44.96 kB⬇
-
🌐 dynamic.phpWeb, 533 B⬇
-
📷 favicon-lg.pngImage, 9.11 kB⬇
-
📷 favicon.pngImage, 3.12 kB⬇
-
🌐 index-lists.cssWeb, 4.77 kB⬇
-
🌐 index.phpWeb, 49.72 kB⬇
-
🌐 indexjs.jsWeb, 377 B⬇
-
🌐 instant-answer.cssWeb, 5.17 kB⬇
-
🌐 layout.cssWeb, 11.37 kB⬇
-
🌐 login.phpWeb, 997 B⬇
-
❓ manifest.webmanifestUnknown, 262 B⬇
-
🌐 memory.jsWeb, 407 B⬇
-
🌐 mermaid.cssWeb, 6.16 kB⬇
-
🌐 model-presets.jsonWeb, 5.51 kB⬇
-
🌐 models.jsonWeb, 8.05 kB⬇
-
🌐 notes.cssWeb, 11.97 kB⬇
-
🌐 overlays.cssWeb, 13.97 kB⬇
-
⚠️ php.iniOS File, 424 B⬇
-
🌐 rankings-view.jsWeb, 5.67 kB⬇
-
🌐 rankings.cssWeb, 3.35 kB⬇
-
🌐 scratchpad-conversation.jsWeb, 4.87 kB⬇
-
🌐 scratchpad-index.jsWeb, 15.55 kB⬇
-
🌐 scratchpad-model.jsWeb, 13.29 kB⬇
-
🌐 scratchpad.cssWeb, 3.12 kB⬇
-
🌐 settings.cssWeb, 4.65 kB⬇
-
🌐 shared-view.cssWeb, 3.48 kB⬇
-
🌐 shared.cssWeb, 16.26 kB⬇
-
🌐 shared.jsWeb, 14.63 kB⬇
-
🌐 shared.phpWeb, 3.28 kB⬇
-
🌐 sticky-notes-editor.jsWeb, 64.84 kB⬇
-
🌐 storage.jsWeb, 36.73 kB⬇
-
🌐 style.cssWeb, 12.06 kB⬇
-
🌐 sw.jsWeb, 1.69 kB⬇
-
🌐 sync.jsWeb, 19.02 kB⬇
-
🌐 tools-index.jsWeb, 15.00 kB⬇
-
🌐 users.jsWeb, 49.86 kB⬇
-
🌐 utility-models.jsonWeb, 1.04 kB⬇
-
🌐 voice-models.jsonWeb, 4.81 kB⬇
/* Mermaid Diagram Expand Overlay */
.div-diagram-expand-btn,
.div-code-expand-btn,
.div-table-expand-btn {
position: absolute;
top: 4px;
right: 4px;
width: 18pt;
height: 18pt;
padding: 0;
font-size: 12pt;
line-height: 18pt;
}
.div-diagram-expand-btn:hover,
.div-code-expand-btn:hover,
.div-table-expand-btn:hover {
filter: brightness(1.15);
color: var(--FG-base);
border-color: var(--AC-trim);
}
/* Shared fixed fullscreen overlay shell (diagram, code, table, and notes overlays) */
:is(.div-diagram-overlay, .div-code-overlay, .div-table-overlay, .div-notes-overlay) {
position: fixed;
top: var(--DM-margin);
left: var(--DM-margin);
bottom: var(--DM-margin);
right: var(--DM-margin);
display: none;
opacity: 0;
z-index: 50;
pointer-events: none;
transition: opacity 0.2s ease-out;
overflow: hidden;
flex-direction: column;
background-color: var(--BG-panel);
border: 2pt solid var(--AC-btn);
border-radius: var(--DM-margin-h);
box-shadow: 0 0 24px rgba(0, 0, 0, 0.4);
}
:is(.div-diagram-overlay, .div-code-overlay, .div-table-overlay, .div-notes-overlay).active {
display: flex;
opacity: 1;
pointer-events: auto;
}
/* Single-column mode: overlays become full-screen */
@media screen and (max-width: 780px) {
:is(.div-diagram-overlay, .div-code-overlay, .div-table-overlay, .div-notes-overlay) {
top: 0;
left: 0;
bottom: 0;
right: 0;
border: none;
border-radius: 0;
}
}
/* Shared overlay body for the code and notes overlays: the 3fr/1fr layout
gated by the column-open class, the scrolling body/thinking panels, and
the narrow-viewport glass panel each overlay's toggle class slides in.
(The code overlay's slide rules live in its section below; the notes
thinking column keeps its framed background in notes.css.) */
:is(.div-code-overlay-layout, .div-notes-overlay-layout) {
display: grid;
grid-template-columns: 3fr 1fr;
gap: var(--DM-margin-h);
flex: 1;
min-height: 0;
width: 100%;
box-sizing: border-box;
padding: var(--DM-margin-h);
}
:is(.div-code-overlay, .div-notes-overlay):not(.column-open) :is(.div-code-overlay-layout, .div-notes-overlay-layout) {
grid-template-columns: 1fr;
}
:is(.div-code-overlay, .div-notes-overlay):not(.column-open) :is(.div-code-overlay-side, .div-notes-overlay-thinking) {
display: none;
}
:is(.div-code-overlay-view, .div-notes-overlay-body) {
min-width: 0;
overflow: auto;
box-sizing: border-box;
padding: var(--DM-margin-q);
background-color: var(--BG-base);
border: 1pt solid var(--BD-panel-l);
border-radius: var(--DM-margin-q);
}
:is(.div-code-overlay-side, .div-notes-overlay-thinking) {
display: flex;
flex-direction: column;
gap: var(--DM-margin-h);
min-height: 0;
min-width: 0;
overflow-y: auto;
overflow-wrap: anywhere;
box-sizing: border-box;
}
@media screen and (max-width: 780px) {
:is(.div-code-overlay-layout, .div-notes-overlay-layout) {
position: relative;
grid-template-columns: 1fr;
}
.div-code-overlay .div-code-overlay-side,
.div-notes-overlay .div-notes-overlay-thinking {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: 2;
width: min(75%, 24em);
background-color: color-mix(in srgb, var(--BG-panel) 55%, transparent);
-webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
border-left: 1pt solid var(--BD-panel-l);
}
.div-notes-overlay .div-notes-overlay-thinking {
transform: translateX(calc(100% - 2em));
transition: transform 0.25s ease-out;
}
.div-notes-overlay.column-open .div-notes-overlay-thinking {
transform: translateX(0);
}
}
.div-diagram-overlay-viewport {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
overflow: hidden;
touch-action: none;
user-select: none;
-webkit-user-select: none;
cursor: grab;
}
.div-diagram-overlay-viewport:active {
cursor: grabbing;
}
.div-diagram-overlay-stage {
position: absolute;
top: 0;
left: 0;
transform-origin: 0 0;
}
/* Message shown in place of a diagram that cannot be rendered */
.div-diagram-overlay-message {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 40em;
padding: var(--DM-margin-h);
color: var(--FG-muted);
white-space: pre-wrap;
word-break: break-word;
}
/* Overlay clone: render at natural size, ignoring the diagram-in-chat
sizing constraints (width/max-width/max-height !important rules) */
#id-diagram-overlay-stage svg {
display: block;
width: 100% !important;
height: 100% !important;
max-width: none !important;
max-height: none !important;
}
.div-diagram-overlay-btn-close {
position: absolute;
top: var(--DM-margin-q);
right: var(--DM-margin-q);
z-index: 2;
border: 1pt solid var(--AC-btn);
border-radius: var(--DM-margin-q);
cursor: pointer;
}
.div-diagram-overlay-zoom {
position: absolute;
bottom: var(--DM-margin-q);
right: var(--DM-margin-q);
display: flex;
gap: var(--DM-margin-q);
z-index: 2;
}
.div-diagram-overlay-zoom button {
min-width: 2em;
height: 18pt;
padding: 0 var(--DM-margin-q);
font-size: 9pt;
line-height: 12pt;
border: 1pt solid var(--AC-btn);
border-radius: var(--DM-margin-q);
cursor: pointer;
}
.div-diagram-overlay-btn-close:hover,
.div-diagram-overlay-zoom button:hover {
filter: brightness(1.15);
border-color: var(--AC-trim);
}
/* Code Block Overlay */
pre.code-block {
position: relative;
}
/* Shared overlay chrome for the code and notes overlays: the header grid,
the 18pt overlay button recipe (also used by the table overlay header and
the code overlay's nav row), the 3fr/1fr body layout gated by the
column-open class, and the scrolling body/thinking panels. Per-overlay
extras stay in the sections below; the narrow-viewport glass panel is
shared too, with each overlay's own slide-in state. */
:is(.div-code-overlay-header, .div-notes-overlay-header) {
display: grid;
grid-template-columns: 1fr auto 1fr;
align-items: center;
padding: var(--DM-margin-q) var(--DM-margin-h);
background-color: var(--BG-panel);
border-bottom: 1pt solid var(--BD-panel);
}
:is(.div-code-overlay-header-side, .div-notes-overlay-header-side) {
display: flex;
align-items: center;
gap: var(--DM-margin-q);
}
:is(.div-code-overlay-header-side, .div-notes-overlay-header-side):last-child {
justify-content: flex-end;
}
:is(.div-code-overlay-header, .div-code-overlay-nav, .div-notes-overlay-header, .div-notes-overlay-prompt, .div-table-overlay-header) button {
height: 18pt;
padding: 0 var(--DM-margin-h);
font-size: 9pt;
line-height: 12pt;
border: 1pt solid var(--AC-btn);
border-radius: var(--DM-margin-q);
cursor: pointer;
}
:is(.div-code-overlay-header, .div-notes-overlay-header, .div-notes-overlay-prompt, .div-table-overlay-header) button:disabled {
opacity: 0.5;
cursor: default;
}
:is(.div-code-overlay-header, .div-notes-overlay-header, .div-notes-overlay-prompt, .div-table-overlay-header) button:hover:not(:disabled),
.div-code-overlay-nav button:hover {
filter: brightness(1.15);
border-color: var(--AC-trim);
}
/* Analysis navigation buttons: header-inline by default, shown with results */
.div-code-overlay-nav-btn,
.div-code-overlay-nav {
display: none;
}
.div-code-overlay.results-shown .div-code-overlay-nav-btn {
display: inline-block;
}
/* Single-column mode: navigation moves to its own row under the header and
results become a translucent panel sliding in from the right; a 2em sliver
stays visible and tapping the edge toggles it. The layout collapse and the
glass panel are shared with the notes overlay in the block above. */
@media screen and (max-width: 780px) {
.div-code-overlay.results-shown .div-code-overlay-nav-btn {
display: none;
}
.div-code-overlay.results-shown .div-code-overlay-nav {
display: grid;
grid-template-columns: 1fr auto 1fr;
align-items: center;
padding: var(--DM-margin-q) var(--DM-margin-h);
background-color: var(--BG-panel);
border-bottom: 1pt solid var(--BD-panel);
}
.div-code-overlay-nav .div-code-overlay-nav-side:last-child {
justify-self: end;
}
.div-code-overlay .div-code-overlay-side {
padding: var(--DM-margin-q);
border-radius: var(--DM-margin-q) 0 0 var(--DM-margin-q);
transform: translateX(calc(100% - 2em));
transition: transform 0.25s ease-out;
}
.div-code-overlay .div-code-overlay-side.side-open {
transform: translateX(0);
}
}
.div-code-overlay-nav-side {
display: flex;
gap: var(--DM-margin-q);
}
.div-code-overlay-title {
font-size: 100%;
text-align: center;
}
.div-code-overlay-lines {
min-width: max-content;
}
.div-code-overlay-line {
display: flex;
}
.div-code-overlay-line-num {
min-width: 3em;
box-sizing: border-box;
padding-right: var(--DM-margin-h);
text-align: right;
color: var(--FG-muted);
user-select: none;
-webkit-user-select: none;
}
.div-code-overlay-line code {
white-space: pre;
background-color: transparent;
}
.div-code-overlay-line.code-line-highlighted {
background-color: var(--AC-trim-tint-soft);
}
.div-code-overlay-thinking {
flex: 0 1 auto;
min-height: 0;
overflow-y: auto;
}
/* Let the thinking block fill the overlay column instead of the
instant-answer 33vh streaming cap */
#id-code-overlay-thinking .instant-answer-thoughts-content {
max-height: none;
}
.div-code-overlay-items {
flex: 1;
min-height: 0;
overflow: auto;
}
.code-analysis-item {
box-sizing: border-box;
padding: var(--DM-margin-q);
margin-bottom: var(--DM-margin-q);
border: 1pt solid var(--BD-panel-l);
border-radius: var(--DM-margin-q);
cursor: pointer;
}
.code-analysis-item:hover {
border-color: var(--AC-trim);
}
.code-analysis-item.selected {
border-color: var(--AC-trim);
background-color: var(--AC-trim-tint-soft);
}
.code-analysis-item-title {
font-weight: bold;
margin-bottom: var(--DM-margin-q);
}
.code-analysis-item-type {
display: inline-block;
margin-right: 0.5em;
padding: 0 0.4em;
font-size: 0.75em;
font-weight: bold;
border: 1pt solid var(--FG-muted);
border-radius: var(--DM-margin-q);
color: var(--FG-muted);
vertical-align: 1px;
}
.code-analysis-item[data-type="CAUTION"] .code-analysis-item-type {
color: var(--TX-badge-admin);
border-color: var(--TX-badge-admin);
}
.code-analysis-item[data-type="WARNING"] .code-analysis-item-type {
color: var(--TX-status-error);
border-color: var(--TX-status-error);
}
.code-analysis-item-analysis {
font-size: 0.9em;
color: var(--FG-base);
}
.as-icon {
font-family: 'Noto Emoji', sans-serif;
}
.btn-tts-preview,
.btn-tts-clear-cache {
border-radius: var(--DM-margin-q);
margin-bottom: var(--DM-margin-h);
}
.btn-tts-preview.btn-preview-playing {
opacity: 0.5;
}
.div-tts-row {
display: flex;
gap: 8px;
align-items: flex-end;
margin-top: 8px;
}
.div-tts-row .div-tts-voice-col {
flex: 2;
min-width: 0;
}
.div-tts-row .div-tts-cost-col {
flex: 1;
}
@media screen and (max-width: 780px) {
.div-tts-row {
flex-wrap: wrap;
}
.div-tts-row .div-tts-voice-col {
flex: 1 1 100%;
}
}
/* Conversation Table Block */
.div-table-block {
position: relative;
margin: var(--DM-margin-h) 0;
box-sizing: border-box;
padding: var(--DM-margin-h);
background-color: var(--BG-panel);
border: 1px solid var(--BD-panel-l);
border-radius: var(--DM-margin-q);
}
.div-table-block table {
margin: 0;
}
/* Title row: title left, expand button right, table reliably below */
.div-table-block-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--DM-margin-q);
margin-bottom: var(--DM-margin-q);
}
.div-table-block-header h7 {
font-weight: bold;
}
.div-table-block-header .div-table-expand-btn {
position: static;
}
.div-table-overlay-view th .span-th-sort {
float: right;
}
.div-table-overlay-view th .span-th-sort-none {
color: var(--FG-muted);
}
/* Table Overlay */
.div-table-overlay-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--DM-margin-q);
padding: var(--DM-margin-q) var(--DM-margin-h);
border-bottom: 1pt solid var(--BD-panel);
}
.input-table-overlay-filter {
flex: 1;
max-width: 24em;
}
.div-table-overlay-title {
padding: var(--DM-margin-q) var(--DM-margin-h);
font-weight: bold;
background-color: var(--BG-panel);
border-bottom: 1pt solid var(--BD-panel);
}
.div-table-overlay-view {
flex: 1;
min-height: 0;
overflow: auto;
box-sizing: border-box;
/* vertical spacing lives outside the scroll area so the sticky header
never moves while scrolling */
margin: var(--DM-margin-q) 0;
}
/* Wrapper holding the table and its sticky header as one unit; horizontal
margin insets the table from the overlay edges */
.div-table-overlay-tablewrap {
margin: 0 var(--DM-margin-q);
}
.div-table-overlay-view table {
width: 100%;
/* separate borders so the sticky header is a solid block: no table
content shows through while rows scroll behind it */
border-collapse: separate;
border-spacing: 0;
}
.div-table-overlay-view th {
position: sticky;
top: 0;
z-index: 1;
cursor: pointer;
user-select: none;
-webkit-user-select: none;
background-color: var(--BG-header);
background-clip: padding-box;
box-shadow: 0 1pt 0 0 var(--BD-panel-l);
}
.div-table-overlay-view th:hover {
background-color: var(--BG-panel2);
}
.div-table-overlay-view mark {
background-color: var(--AC-trim-tint-strong);
color: inherit;
}
overlays.css
×
Type: Web, text/plain
13.97 Kilobytes
Last Modified 2026-11-04 09:48:28
⬇ Download File
Type: Web, text/plain
13.97 Kilobytes
Last Modified 2026-11-04 09:48:28
⬇ Download File