diff --git a/booth/templates/base.html b/booth/templates/base.html index 9d2514c..45b4f5c 100644 --- a/booth/templates/base.html +++ b/booth/templates/base.html @@ -162,7 +162,10 @@ "Needs you" rows carry an amber inner edge — the one thing on the page that asks to be looked at. */ .desk{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--space-6);align-items:start} - @media (max-width:1000px){.desk{grid-template-columns:1fr}} + /* minmax(0,…), never a bare 1fr: 1fr's minimum is the content's, and a + Desk row's nowrap provenance line would then set the column's width — + the page scrolled sideways on a phone. */ + @media (max-width:1000px){.desk{grid-template-columns:minmax(0,1fr)}} .desk-sec{margin:0 0 var(--space-6)} .desk-head{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-family:var(--font-mono); font-size:var(--size-micro);font-weight:500;letter-spacing:var(--tracking-caps);text-transform:uppercase; @@ -171,19 +174,19 @@ .desk-head-needs{color:var(--warning-text)} .desk-head-new{color:var(--intel-text)} .desk-rule{font-weight:400;letter-spacing:0;text-transform:none;color:var(--text-muted)} - .desk-row{display:grid;grid-template-columns:210px minmax(0,1fr) auto;gap:var(--space-4);align-items:center; + .desk-row{display:flex;gap:var(--space-4);align-items:center; padding:12px;margin-bottom:8px;border:1px solid var(--border-default);border-radius:var(--radius-xl); background:var(--surface-card);box-shadow:var(--shadow-sm); transition:border-color var(--dur-2) var(--ease-out)} .desk-row:hover,.desk-row:focus-within{border-color:var(--border-strong)} .desk-row.is-needs{box-shadow:inset 3px 0 0 var(--warning),var(--shadow-sm)} - .desk-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;height:58px;border-radius:var(--radius-md); + .desk-strip{flex:0 0 210px;display:grid;grid-template-columns:repeat(4,1fr);gap:3px;height:58px;border-radius:var(--radius-md); overflow:hidden;background:var(--surface-sunken)} .desk-strip img{width:100%;height:100%;object-fit:cover;display:block} .desk-strip .ph{grid-column:1/-1;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono); font-size:var(--size-caption);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)} .desk-strip:hover{text-decoration:none} - .desk-main{min-width:0} + .desk-main{flex:1 1 auto;min-width:0} .desk-title{display:block;font-weight:600;font-size:var(--size-h3);line-height:1.3;color:var(--text-heading); overflow-wrap:anywhere} .desk-title:hover{color:var(--text-link);text-decoration:none} @@ -191,25 +194,28 @@ .desk-main .prov{margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .desk-facts{margin-top:5px;font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-muted)} .desk-flags{color:var(--success-text)} - .desk-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px} + .desk-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:8px} .badge-new{color:var(--intel-text);background:var(--intel-soft)} .badge-broken{color:var(--danger-text);background:var(--danger-soft);border-color:color-mix(in oklab,var(--danger) 40%,transparent)} - /* The row's keep / release / × — quiet until the row is hovered or focused, - because a destructive control must not compete with the thing you came to - read. Static here: on the old cards they floated over a thumbnail. */ - .desk-acts{display:flex;gap:6px;opacity:0;transition:opacity var(--dur-1)} - .desk-row:hover .desk-acts,.desk-acts:focus-within{opacity:1} - .desk-acts form{margin:0} - .desk-acts button{height:28px;min-width:28px;padding:0 8px;font-size:var(--size-sm);border-radius:var(--radius-md); - border:1px solid var(--border-strong);background:var(--surface-raised);color:var(--text-body); + /* The row's keep / release / wipe, inline on the facts line beside the + state each one changes. Quiet — muted mono like the line they sit in, so + a destructive control does not compete with the thing you came to read — + but always there and always tappable; wipe turns danger only under the + pointer or focus. */ + .desk-facts form{display:inline;margin:0} + .desk-facts form button{display:inline-block;margin-left:4px;padding:1px 6px;height:auto;min-width:0; + font:inherit;line-height:1.4;color:var(--text-muted);background:none; + border:1px solid var(--border-default);border-radius:var(--radius-sm); -webkit-backdrop-filter:none;backdrop-filter:none;cursor:pointer} - .desk-acts .release button{font-family:var(--font-mono);font-size:var(--size-caption)} - .desk-acts .wipe button:hover{background:var(--danger);border-color:var(--danger);color:var(--danger-contrast)} - .desk-acts .keepit button:hover,.desk-acts .release button:hover{background:var(--surface-overlay)} + .desk-facts .wipe button{margin-left:0} + .desk-facts form button:hover,.desk-facts form button:focus-visible{color:var(--text-body); + border-color:var(--border-strong);background:var(--surface-overlay)} + .desk-facts .wipe button:hover,.desk-facts .wipe button:focus-visible{background:var(--danger); + border-color:var(--danger);color:var(--danger-contrast)} @media (max-width:700px){ - .desk-row{grid-template-columns:1fr} - .desk-side{flex-direction:row;align-items:center;justify-content:space-between} - .desk-acts{opacity:1} + .desk-row{flex-wrap:wrap} + .desk-strip{flex-basis:100%} + .desk-side{flex-basis:100%;flex-direction:row;align-items:center} } /* the side column */ .desk-panel{border:1px solid var(--border-default);border-radius:var(--radius-xl);background:var(--surface-card); @@ -252,8 +258,9 @@ .prov-broken{color:var(--warning-text);font-style:italic;cursor:help} /* keep / release / wipe — the controls themselves. Where they sit is the - surface's business: a Desk row (.desk-acts) or the booth header (.wipe-lg, - .keep-lg). The kept/ephemeral CARDS they used to float over are gone. */ + surface's business: a Desk row's facts line (.desk-facts) or the booth + header (.wipe-lg, .keep-lg). The kept/ephemeral CARDS they used to float + over are gone. */ .wipe,.keepit,.release{margin:0} .wipe button,.keepit button,.release button{cursor:pointer;font:inherit;line-height:1; transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)} diff --git a/booth/templates/index.html b/booth/templates/index.html index 0e25f60..92c40ce 100644 --- a/booth/templates/index.html +++ b/booth/templates/index.html @@ -36,43 +36,44 @@ {%- else -%}{{ b.name }}{%- endif -%} {{ provenance(b.manifest) }} + {# The row's controls sit ON the facts line, each beside the state it + changes: release after "kept", keep after the countdown, wipe last. + They were a hover-revealed column that reserved its room while + invisible (operator, on the live Desk: "release and x take up space + whether or not they're visible") — and hover never existed on touch. + The confirmation text is DATA-DRIVEN: the booth name travels as a data + attribute and never reaches a JS string (see the script below). + Release is reversible, so it has no prompt beyond the wording. #}