@@ -1,15 +1,14 @@
/* my-deepagent Web GUI — v0.2 PR #3 polish pass.
/* my-deepagent Web GUI — v0.2 PR #3 (Claude design pass) .
*
*
* Visual reference: modern dev-tool dashboards (Linear / Vercel /
* Visual reference: Anthropic / Claude design language
* Resend / Railway). Goals:
* - Warm cream paper background (#F5F0E8 family)
* - Refined dark palette (deeper background, soft surfaces)
* - Charcoal warm-tinted ink for body
* - Card-based layout with clear hierarchy
* - Tiempos / Source Serif headings (serif heads, sans body)
* - Pill badges for run / phase state
* - Rust / terracotta accent (#CC5500 family)
* - Tabular numbers for metrics, monospace for IDs
* - Generous whitespace, soft 1px borders, minimal shadow
* - 8 px spacing grid, generous padding
* - Rounded corners 6– 12 px, no heavy elevation
* - Subtle hover / transition without animation chaos
*
*
* Vanilla CSS only. No build system. No CSS-in-JS .
* Vanilla CSS only. No framework, no build system .
*/
*/
/* ---------- Reset + tokens ---------- */
/* ---------- Reset + tokens ---------- */
@@ -21,52 +20,52 @@
}
}
: root {
: root {
/* Surface (background → cards → elevated) */
/* Paper / surface */
--bg : #0a0b 0e ;
--bg : #f5f 0e8 ;
--surface-1 : #13141a ;
--surface-1 : #fbfaf6 ;
--surface-2 : #181a22 ;
--surface-2 : #efe9de ;
--surface-3 : #1f222c ;
--surface-3 : #e7e0d3 ;
--surface-hover : #232732 ;
--surface-hover : #eee7da ;
/* Borders */
/* Borders */
--border : #262834 ;
--border : #e2dccf ;
--border-strong : #313548 ;
--border-strong : #cfc7b6 ;
/* Text */
/* Ink */
--text-primary : #f5f6f9 ;
--text-primary : #1b1916 ;
--text-secondary : #b6b9c4 ;
--text-secondary : #54514a ;
--text-muted : #6c707f ;
--text-muted : #8a857a ;
--text-faint : #4a4d59 ;
--text-faint : #b6b0a3 ;
/* Accents */
/* Accents (rust + supporting palette) */
--accent : #7c9eff ;
--accent : #c14a1a ;
--accent-hover : #93b1ff ;
--accent-hover : #a73d12 ;
--accent-bg : rgba ( 124 , 158 , 255 , 0.12 ) ;
--accent-bg : rgba ( 193 , 74 , 26 , 0.1 ) ;
--success : #6cdba2 ;
--success : #4a6f2a ;
--success-bg : rgba ( 108 , 219 , 16 2, 0.12 ) ;
--success-bg : rgba ( 74 , 111 , 4 2, 0.1 ) ;
--warning : #f5cc73 ;
--warning : #a86c1f ;
--warning-bg : rgba ( 245 , 204 , 115 , 0.14 ) ;
--warning-bg : rgba ( 168 , 108 , 3 1, 0.12 ) ;
--danger : #ef7a7a ;
--danger : #a33419 ;
--danger-bg : rgba ( 239 , 12 2, 12 2, 0.14 ) ;
--danger-bg : rgba ( 163 , 5 2, 25 , 0.1 ) ;
--info : #8a9cc7 ;
--info : #4a5d8c ;
--info-bg : rgba ( 138 , 156 , 199 , 0.12 ) ;
--info-bg : rgba ( 74 , 93 , 140 , 0.1 ) ;
/* Type */
/* Type */
--font-sans : - apple-system , BlinkMacSystemFont , "Inter" , "Pretendard ",
--font-serif : "Tiempos Headline" , "Source Serif Pro" , "IBM Plex Serif ",
"SF Pro Text " , "Apple SD Gothic Neo" , "Noto Sans KR" , "Segoe UI" ,
"Georgia " , "Apple SD Gothic Neo" , "Noto Serif KR" , serif ;
Helvetica , Arial , sans-serif ;
--font-sans : "Styrene B" , "Styrene A" , "Inter" , "Pretendard" ,
--font-mono : "SF Mono" , "JetBrains Mono" , "Cascadia Code" , "Menl o",
- apple-system , BlinkMacSystemFont , "Apple SD Gothic Ne o" ,
"Monaco" , "Consolas" , monospace ;
"Noto Sans KR" , "Segoe UI" , Helvetica , Arial , sans-serif ;
--font-mono : "JetBrains Mono" , "SF Mono" , "Menlo" , "Monaco" , "Consolas" ,
monospace ;
/* Geometry */
/* Geometry */
--radius-sm : 6 px ;
--radius-sm : 6 px ;
--radius : 10 px ;
--radius : 8 px ;
--radius-lg : 14 px ;
--radius-lg : 12 px ;
--shadow-sm : 0 1 px 0 rgba ( 255 , 255 , 255 , 0.03 ) inset ;
--shadow-card : 0 1 px 0 rgba ( 28 , 25 , 22 , 0.04 ) ;
--shadow-card : 0 1 px 0 rgba ( 255 , 255 , 255 , 0.03 ) inset ,
0 1 px 12 px rgba ( 0 , 0 , 0 , 0.2 ) ;
}
}
/* ---------- Base ---------- */
/* ---------- Base ---------- */
@@ -78,11 +77,10 @@ body {
background : var ( - - bg ) ;
background : var ( - - bg ) ;
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
font-family : var ( - - font - sans ) ;
font-family : var ( - - font - sans ) ;
font-size : 14 px ;
font-size : 15 px ;
line-height : 1.55 ;
line-height : 1.55 ;
-webkit- font-smoothing : antialiased ;
-webkit- font-smoothing : antialiased ;
-moz- osx-font-smoothing : grayscale ;
-moz- osx-font-smoothing : grayscale ;
font-feature-settings : "cv05" , "ss01" ;
font-variant-numeric : tabular-nums ;
font-variant-numeric : tabular-nums ;
}
}
@@ -100,69 +98,73 @@ a {
a : hover {
a : hover {
color : var ( - - accent - hover ) ;
color : var ( - - accent - hover ) ;
text-decoration : underline ;
text-decoration-thickness : 1 px ;
text-underline-offset : 3 px ;
}
}
code ,
code ,
kbd ,
kbd ,
. mono {
. mono {
font-family : var ( - - font - mono ) ;
font-family : var ( - - font - mono ) ;
font-size : 0.85 em ;
font-size : 0.86 em ;
letter-spacing : -0.01 em ;
letter-spacing : -0.005 em ;
}
}
:: selection {
:: selection {
background : var ( - - accent - bg ) ;
background : var ( - - accent ) ;
color : var ( - - text - primary ) ;
color : var ( - - surface -1 ) ;
}
}
/* ---------- Header / nav ---------- */
/* ---------- Header / nav ---------- */
header {
header {
background : var ( - - surface -1 ) ;
background : transparent ;
border-bottom : 1 px solid var ( - - border ) ;
border-bottom : 1 px solid var ( - - border ) ;
padding : 16 px 32 px ;
padding : 20 px 36 px ;
display : flex ;
display : flex ;
justify-content : space-between ;
justify-content : space-between ;
align-items : center ;
align-items : baseline ;
gap : 24 px ;
gap : 24 px ;
}
}
header h1 {
header h1 {
margin : 0 ;
margin : 0 ;
font-size : 15 px ;
font-family : var ( - - font - serif ) ;
font-weight : 600 ;
font-size : 22 px ;
font-weight : 500 ;
letter-spacing : -0.02 em ;
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
letter-spacing : -0.01 em ;
display : flex ;
align-items : center ;
gap : 10 px ;
}
}
header h1 :: before {
header h1 a {
content : "" ;
color : inherit ;
width : 8 px ;
}
height : 8 px ;
background : linear-gradient ( 135 deg , var ( - - accent ) , var ( - - success ) ) ;
header h1 a : hover {
border-radius : 2 px ;
text-decoration : none ;
color : var ( - - accent ) ;
}
}
header nav {
header nav {
display : flex ;
display : flex ;
gap : 4 px ;
gap : 4 px ;
align-self : center ;
}
}
header nav a {
header nav a {
color : var ( - - text - secondary ) ;
color : var ( - - text - secondary ) ;
padding : 6 px 12 px ;
padding : 6 px 12 px ;
border-radius : var ( - - radius - sm ) ;
border-radius : var ( - - radius - sm ) ;
font-size : 13 px ;
font-size : 14 px ;
font-weight : 5 00;
font-weight : 4 00;
transition : all 0.15 s ease ;
transition : all 0.15 s ease ;
}
}
header nav a : hover {
header nav a : hover {
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
background : var ( - - surface - hover ) ;
background : var ( - - surface -2 ) ;
text-decoration : none ;
}
}
header nav a . active {
header nav a . active {
@@ -174,10 +176,10 @@ header nav a.active {
main {
main {
flex : 1 ;
flex : 1 ;
max-width : 12 80 px ;
max-width : 11 80 px ;
width : 100 % ;
width : 100 % ;
margin : 0 auto ;
margin : 0 auto ;
padding : 32 px ;
padding : 40 px 36 px 64 px ;
}
}
. page-title {
. page-title {
@@ -185,41 +187,48 @@ main {
align-items : baseline ;
align-items : baseline ;
justify-content : space-between ;
justify-content : space-between ;
gap : 16 px ;
gap : 16 px ;
margin-bottom : 24 px ;
margin-bottom : 28 px ;
border-bottom : 1 px solid var ( - - border ) ;
padding-bottom : 16 px ;
}
}
. page-title h2 {
. page-title h2 {
margin : 0 ;
margin : 0 ;
font-size : 22 px ;
font-family : var ( - - font - serif ) ;
font-weight : 600 ;
font-size : 30 px ;
font-weight : 500 ;
letter-spacing : -0.02 em ;
letter-spacing : -0.02 em ;
text-transform : none ;
color : var ( - - text - primary ) ;
}
}
. page-subtitle {
. page-subtitle {
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-size : 13 px ;
font-size : 14 px ;
}
}
h2 {
h2 {
margin : 28 px 0 14 px ;
margin : 36 px 0 14 px ;
font-size : 13 px ;
font-family : var ( - - font - serif ) ;
font-weight : 600 ;
font-size : 18 px ;
letter-spacing : 0.04 em ;
font-weight : 500 ;
text-transform : uppercase ;
letter-spacing : -0.01 em ;
color : var ( - - text - muted ) ;
color : var ( - - text - primary ) ;
text-transform : none ;
}
}
h2 . section-title {
h2 . section-title {
display : flex ;
display : flex ;
align-items : center ;
align-items : baseline ;
gap : 10 px ;
gap : 10 px ;
}
}
h2 . section-title :: after {
h2 . section-title . hint {
c ontent : "" ;
f ont-family : var ( - - font - sans ) ;
flex : 1 ;
font-size : 13 px ;
height : 1 px ;
color : var ( - - text - muted ) ;
background : var ( - - border ) ;
font-weight : 400 ;
margin-left : 4 px ;
}
}
/* ---------- Cards / tables ---------- */
/* ---------- Cards / tables ---------- */
@@ -236,13 +245,13 @@ table {
width : 100 % ;
width : 100 % ;
border-collapse : separate ;
border-collapse : separate ;
border-spacing : 0 ;
border-spacing : 0 ;
font-size : 13 px ;
font-size : 14 px ;
}
}
th ,
th ,
td {
td {
text-align : left ;
text-align : left ;
padding : 12 px 16 px ;
padding : 14 px 18 px ;
border-bottom : 1 px solid var ( - - border ) ;
border-bottom : 1 px solid var ( - - border ) ;
vertical-align : middle ;
vertical-align : middle ;
}
}
@@ -261,13 +270,13 @@ tbody tr:hover {
th {
th {
background : var ( - - surface -2 ) ;
background : var ( - - surface -2 ) ;
color : var ( - - text - muted ) ;
color : var ( - - text - secondary ) ;
font-weight : 500 ;
font-weight : 500 ;
font-size : 11 px ;
font-size : 12 px ;
letter-spacing : 0.03 em ;
text-transform : uppercase ;
text-transform : uppercase ;
letter-spacing : 0.05 em ;
padding-top : 11 px ;
padding-top : 10 px ;
padding-bot tom : 11 px ;
padding-bottom : 10 px ;
border-bottom : 1 px solid var ( - - border - strong ) ;
border-bottom : 1 px solid var ( - - border - strong ) ;
}
}
@@ -285,12 +294,13 @@ td a {
display : inline-flex ;
display : inline-flex ;
align-items : center ;
align-items : center ;
gap : 6 px ;
gap : 6 px ;
padding : 3 px 10 px ;
padding : 3 px 11 px ;
border-radius : 999 px ;
border-radius : 999 px ;
font-size : 11 px ;
font-size : 12 px ;
font-weight : 500 ;
font-weight : 500 ;
letter-spacing : 0.02 em ;
letter-spacing : 0.01 em ;
border : 1 px solid transparent ;
border : 1 px solid transparent ;
font-variant-numeric : tabular-nums ;
}
}
. badge :: before {
. badge :: before {
@@ -306,6 +316,7 @@ td a {
. badge . state-ok {
. badge . state-ok {
color : var ( - - success ) ;
color : var ( - - success ) ;
background : var ( - - success - bg ) ;
background : var ( - - success - bg ) ;
border-color : rgba ( 74 , 111 , 42 , 0.2 ) ;
}
}
. badge . state-running ,
. badge . state-running ,
@@ -315,12 +326,14 @@ td a {
. badge . state-awaiting_approval {
. badge . state-awaiting_approval {
color : var ( - - warning ) ;
color : var ( - - warning ) ;
background : var ( - - warning - bg ) ;
background : var ( - - warning - bg ) ;
border-color : rgba ( 168 , 108 , 31 , 0.22 ) ;
}
}
. badge . state-failed ,
. badge . state-failed ,
. badge . state-aborted {
. badge . state-aborted {
color : var ( - - danger ) ;
color : var ( - - danger ) ;
background : var ( - - danger - bg ) ;
background : var ( - - danger - bg ) ;
border-color : rgba ( 163 , 52 , 25 , 0.2 ) ;
}
}
. badge . state-pending ,
. badge . state-pending ,
@@ -331,9 +344,9 @@ td a {
. badge . state-skipped {
. badge . state-skipped {
color : var ( - - info ) ;
color : var ( - - info ) ;
background : var ( - - info - bg ) ;
background : var ( - - info - bg ) ;
border-color : rgba ( 74 , 93 , 140 , 0.2 ) ;
}
}
/* Animated dot for in-progress states */
. badge . state-running :: before ,
. badge . state-running :: before ,
. badge . state-executing :: before ,
. badge . state-executing :: before ,
. badge . state-validating :: before ,
. badge . state-validating :: before ,
@@ -343,7 +356,7 @@ td a {
@ keyframes pulse {
@ keyframes pulse {
0 % , 100 % { opacity : 1 ; transform : scale ( 1 ) ; }
0 % , 100 % { opacity : 1 ; transform : scale ( 1 ) ; }
50 % { opacity : 0.4 ; transform : scale ( 0.85 ) ; }
50 % { opacity : 0.45 ; transform : scale ( 0.85 ) ; }
}
}
/* ---------- Buttons ---------- */
/* ---------- Buttons ---------- */
@@ -351,13 +364,13 @@ td a {
button ,
button ,
. button {
. button {
appearance : none ;
appearance : none ;
background : var ( - - surface -3 ) ;
background : var ( - - surface -1 ) ;
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
border : 1 px solid var ( - - border - strong ) ;
border : 1 px solid var ( - - border - strong ) ;
border-radius : var ( - - radius - sm ) ;
border-radius : var ( - - radius - sm ) ;
padding : 8 px 14 px ;
padding : 8 px 16 px ;
font-family : inherit ;
font-family : inherit ;
font-size : 13px ;
font-size : 13.5 px ;
font-weight : 500 ;
font-weight : 500 ;
letter-spacing : -0.005 em ;
letter-spacing : -0.005 em ;
cursor : pointer ;
cursor : pointer ;
@@ -371,8 +384,9 @@ button,
button : hover : not ( : disabled ) ,
button : hover : not ( : disabled ) ,
. button : hover {
. button : hover {
background : var ( - - surface - hover ) ;
background : var ( - - surface - hover ) ;
border-color : var ( - - border - strong ) ;
border-color : var ( - - text - faint ) ;
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
text-decoration : none ;
}
}
button : active : not ( : disabled ) {
button : active : not ( : disabled ) {
@@ -387,19 +401,20 @@ button:disabled {
button . primary {
button . primary {
background : var ( - - accent ) ;
background : var ( - - accent ) ;
border-color : var ( - - accent ) ;
border-color : var ( - - accent ) ;
color : #0a0b0e ;
color : var ( - - surface -1 ) ;
font-weight : 6 00;
font-weight : 5 00;
}
}
button . primary : hover : not ( : disabled ) {
button . primary : hover : not ( : disabled ) {
background : var ( - - accent - hover ) ;
background : var ( - - accent - hover ) ;
border-color : var ( - - accent - hover ) ;
border-color : var ( - - accent - hover ) ;
color : var ( - - surface -1 ) ;
}
}
button . danger {
button . danger {
background : transparent ;
background : transparent ;
color : var ( - - danger ) ;
color : var ( - - danger ) ;
border-color : rgba ( 239 , 12 2, 12 2, 0.3 ) ;
border-color : rgba ( 163 , 5 2, 25 , 0.32 ) ;
}
}
button . danger : hover : not ( : disabled ) {
button . danger : hover : not ( : disabled ) {
@@ -413,15 +428,15 @@ label {
display : block ;
display : block ;
margin : 0 0 6 px ;
margin : 0 0 6 px ;
color : var ( - - text - secondary ) ;
color : var ( - - text - secondary ) ;
font-size : 12 px ;
font-size : 13 px ;
font-weight : 500 ;
font-weight : 500 ;
letter-spacing : 0.01 em ;
}
}
label . hint {
label . hint {
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-weight : 400 ;
font-weight : 400 ;
margin-left : 6 px ;
margin-left : 6 px ;
font-size : 12.5 px ;
}
}
input [ type = "text" ] ,
input [ type = "text" ] ,
@@ -433,11 +448,11 @@ select {
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
border : 1 px solid var ( - - border ) ;
border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - sm ) ;
border-radius : var ( - - radius - sm ) ;
padding : 9 px 12 px ;
padding : 10 px 13 px ;
font-family : inherit ;
font-family : inherit ;
font-size : 13 px ;
font-size : 14 px ;
line-height : 1.5 ;
line-height : 1.5 ;
transition : border-color 0.15 s ease , background 0.15 s ease ;
transition : border-color 0.15 s ease , box-shadow 0.15 s ease , background 0.15 s ease ;
}
}
input : focus ,
input : focus ,
@@ -445,7 +460,7 @@ textarea:focus,
select : focus {
select : focus {
outline : none ;
outline : none ;
border-color : var ( - - accent ) ;
border-color : var ( - - accent ) ;
background : var ( - - surface -2 ) ;
box-shadow : 0 0 0 3 px var ( - - accent - bg ) ;
}
}
input :: placeholder ,
input :: placeholder ,
@@ -455,38 +470,35 @@ textarea::placeholder {
textarea {
textarea {
resize : vertical ;
resize : vertical ;
min-height : 10 0 px ;
min-height : 11 0 px ;
font-family : var ( - - font - mono ) ;
font-family : var ( - - font - mono ) ;
font-size : 12 px ;
font-size : 13 px ;
line-height : 1.6 ;
}
}
select {
select {
appearance : none ;
appearance : none ;
background-image : url ( "data:image/svg+xml,%3Csvg width='10' height='6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23b6b9c4 ' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E" ) ;
background-image : url ( "data:image/svg+xml,%3Csvg width='10' height='6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2354514a ' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E" ) ;
background-repeat : no-repeat ;
background-repeat : no-repeat ;
background-position : right 12 px center ;
background-position : right 14 px center ;
padding-right : 32 px ;
padding-right : 36 px ;
}
}
. form-row {
. form-row {
margin-bottom : 16 px ;
margin-bottom : 18 px ;
}
. form-row . compact {
margin-bottom : 8 px ;
}
}
. form-grid {
. form-grid {
display : grid ;
display : grid ;
grid-template-columns : 1 fr 20 0 px ;
grid-template-columns : 1 fr 22 0 px ;
gap : 16 px ;
gap : 16 px ;
}
}
. action-bar {
. action-bar {
display : flex ;
display : flex ;
gap : 8 px ;
gap : 8 px ;
margin : 24 px 0 0 ;
margin : 28 px 0 0 ;
padding-top : 16 px ;
padding-top : 18 px ;
border-top : 1 px solid var ( - - border ) ;
border-top : 1 px solid var ( - - border ) ;
}
}
@@ -502,13 +514,14 @@ select {
border : 1 px solid var ( - - border ) ;
border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius ) ;
border-radius : var ( - - radius ) ;
padding : 4 px 0 ;
padding : 4 px 0 ;
box-shadow : var ( - - shadow - card ) ;
}
}
. meta-row {
. meta-row {
display : grid ;
display : grid ;
grid-template-columns : 14 0 px 1 fr ;
grid-template-columns : 15 0 px 1 fr ;
gap : 16 px ;
gap : 18 px ;
padding : 10 px 16 px ;
padding : 12 px 18 px ;
border-bottom : 1 px solid var ( - - border ) ;
border-bottom : 1 px solid var ( - - border ) ;
align-items : center ;
align-items : center ;
}
}
@@ -519,21 +532,21 @@ select {
. meta-row . key {
. meta-row . key {
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-size : 12px ;
font-size : 12.5 px ;
font-weight : 500 ;
font-weight : 500 ;
letter-spacing : 0.01 em ;
letter-spacing : 0.02 em ;
text-transform : uppercase ;
text-transform : uppercase ;
}
}
. meta-row . value {
. meta-row . value {
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
font-size : 13 px ;
font-size : 14 px ;
word-break : break-all ;
word-break : break-all ;
}
}
. meta-row . value . mono {
. meta-row . value . mono {
font-family : var ( - - font - mono ) ;
font-family : var ( - - font - mono ) ;
font-size : 12px ;
font-size : 12.5 px ;
color : var ( - - text - secondary ) ;
color : var ( - - text - secondary ) ;
}
}
@@ -546,23 +559,24 @@ select {
. budget-grid {
. budget-grid {
display : grid ;
display : grid ;
grid-template-columns : repeat ( auto - fill , minmax ( 280 px , 1 fr ) ) ;
grid-template-columns : repeat ( auto - fill , minmax ( 280 px , 1 fr ) ) ;
gap : 12 px ;
gap : 14 px ;
}
}
. budget-card {
. budget-card {
background : var ( - - surface -1 ) ;
background : var ( - - surface -1 ) ;
border : 1 px solid var ( - - border ) ;
border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius ) ;
border-radius : var ( - - radius ) ;
padding : 16 px ;
padding : 18 px ;
box-shadow : var ( - - shadow - card ) ;
}
}
. budget-card . scope {
. budget-card . scope {
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-size : 11 px ;
font-size : 12 px ;
font-weight : 500 ;
font-weight : 500 ;
letter-spacing : 0.04 em ;
letter-spacing : 0.04 em ;
text-transform : uppercase ;
text-transform : uppercase ;
margin-bottom : 6 px ;
margin-bottom : 8 px ;
display : -webkit- box ;
display : -webkit- box ;
-webkit- line-clamp : 1 ;
-webkit- line-clamp : 1 ;
-webkit- box-orient : vertical ;
-webkit- box-orient : vertical ;
@@ -572,8 +586,9 @@ select {
}
}
. budget-card . amount {
. budget-card . amount {
font-size : 22 px ;
font-family : var ( - - font - serif ) ;
font-weight : 600 ;
font-size : 26 px ;
font-weight : 500 ;
letter-spacing : -0.02 em ;
letter-spacing : -0.02 em ;
color : var ( - - text - primary ) ;
color : var ( - - text - primary ) ;
}
}
@@ -582,9 +597,10 @@ select {
. budget-card . amount . over { color : var ( - - danger ) ; }
. budget-card . amount . over { color : var ( - - danger ) ; }
. budget-card . cap {
. budget-card . cap {
font-family : var ( - - font - sans ) ;
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-size : 12 px ;
font-size : 13 px ;
font-weight : 5 00;
font-weight : 4 00;
margin-left : 6 px ;
margin-left : 6 px ;
}
}
@@ -592,7 +608,7 @@ select {
height : 4 px ;
height : 4 px ;
background : var ( - - surface -3 ) ;
background : var ( - - surface -3 ) ;
border-radius : 2 px ;
border-radius : 2 px ;
margin-top : 10 px ;
margin-top : 12 px ;
overflow : hidden ;
overflow : hidden ;
}
}
@@ -615,14 +631,15 @@ select {
overflow-y : auto ;
overflow-y : auto ;
padding : 8 px 0 ;
padding : 8 px 0 ;
font-family : var ( - - font - mono ) ;
font-family : var ( - - font - mono ) ;
font-size : 12px ;
font-size : 12.5 px ;
box-shadow : var ( - - shadow - card ) ;
}
}
. event-line {
. event-line {
display : grid ;
display : grid ;
grid-template-columns : 80 px 1 fr ;
grid-template-columns : 80 px 1 fr ;
gap : 12 px ;
gap : 14 px ;
padding : 5 px 16 px ;
padding : 6 px 18 px ;
border-bottom : 1 px solid transparent ;
border-bottom : 1 px solid transparent ;
}
}
@@ -632,7 +649,7 @@ select {
. event-line . ts {
. event-line . ts {
color : var ( - - text - faint ) ;
color : var ( - - text - faint ) ;
font-size : 11px ;
font-size : 11.5 px ;
}
}
. event-line . body . type {
. event-line . body . type {
@@ -643,7 +660,7 @@ select {
. event-line . body . payload {
. event-line . body . payload {
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
margin-left : 8 px ;
margin-left : 8 px ;
font-size : 11px ;
font-size : 11.5 px ;
word-break : break-all ;
word-break : break-all ;
}
}
@@ -653,7 +670,7 @@ select {
. event-line . run-resumed . body . type { color : var ( - - warning ) ; }
. event-line . run-resumed . body . type { color : var ( - - warning ) ; }
. events :: -webkit-scrollbar {
. events :: -webkit-scrollbar {
width : 8 px ;
width : 10 px ;
}
}
. events :: -webkit-scrollbar-track {
. events :: -webkit-scrollbar-track {
@@ -662,36 +679,39 @@ select {
. events :: -webkit-scrollbar-thumb {
. events :: -webkit-scrollbar-thumb {
background : var ( - - border - strong ) ;
background : var ( - - border - strong ) ;
border-radius : 4 px ;
border-radius : 5 px ;
border : 2 px solid var ( - - surface -1 ) ;
}
}
/* ---------- Empty / error states ---------- */
/* ---------- Empty / error states ---------- */
. empty {
. empty {
padding : 48 px 24 px ;
padding : 56 px 24 px ;
text-align : center ;
text-align : center ;
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-size : 13 px ;
font-size : 14 px ;
}
}
. empty . empty-icon {
. empty . empty-icon {
font-size : 28 px ;
font-family : var ( - - font - serif ) ;
margin-bottom : 8 px ;
font-size : 30 px ;
opacity : 0.4 ;
margin-bottom : 10 px ;
opacity : 0.5 ;
color : var ( - - accent ) ;
}
}
. empty . cta {
. empty . cta {
margin-top : 16 px ;
margin-top : 18 px ;
}
}
. error-banner {
. error-banner {
background : var ( - - danger - bg ) ;
background : var ( - - danger - bg ) ;
border : 1 px solid rgba ( 239 , 12 2, 12 2, 0.3 ) ;
border : 1 px solid rgba ( 163 , 5 2, 25 , 0.28 ) ;
border-radius : var ( - - radius ) ;
border-radius : var ( - - radius ) ;
padding : 12 px 16 px ;
padding : 12 px 16 px ;
margin-bottom : 16 px ;
margin-bottom : 16 px ;
color : var ( - - danger ) ;
color : var ( - - danger ) ;
font-size : 13px ;
font-size : 13.5 px ;
display : flex ;
display : flex ;
align-items : center ;
align-items : center ;
gap : 10 px ;
gap : 10 px ;
@@ -705,20 +725,21 @@ select {
width : 18 px ;
width : 18 px ;
height : 18 px ;
height : 18 px ;
background : var ( - - danger ) ;
background : var ( - - danger ) ;
color : #0a0b0e ;
color : var ( - - surface -1 ) ;
border-radius : 50 % ;
border-radius : 50 % ;
font-weight : 700 ;
font-weight : 700 ;
font-size : 11 px ;
font-size : 11 px ;
flex-shrink : 0 ;
flex-shrink : 0 ;
font-family : var ( - - font - sans ) ;
}
}
/* ---------- Tag chip (per-role override input) ---------- */
/* ---------- Tag chip (per-role override input) ---------- */
. chips {
. chips {
display : grid ;
display : grid ;
grid-template-columns : 14 0 px 1 fr ;
grid-template-columns : 16 0 px 1 fr ;
gap : 12 px ;
gap : 14 px ;
padding : 12 px 16 px ;
padding : 14 px 18 px ;
border-bottom : 1 px solid var ( - - border ) ;
border-bottom : 1 px solid var ( - - border ) ;
align-items : center ;
align-items : center ;
}
}
@@ -728,14 +749,14 @@ select {
}
}
. chips . role {
. chips . role {
font-size : 12 px ;
font-size : 13 px ;
color : var ( - - text - secondary ) ;
color : var ( - - text - secondary ) ;
font-weight : 500 ;
font-weight : 500 ;
}
}
. chips . role . hint {
. chips . role . hint {
display : block ;
display : block ;
font-size : 11 px ;
font-size : 12 px ;
color : var ( - - text - muted ) ;
color : var ( - - text - muted ) ;
font-weight : 400 ;
font-weight : 400 ;
margin-top : 2 px ;
margin-top : 2 px ;
@@ -743,14 +764,15 @@ select {
. chips input {
. chips input {
font-family : var ( - - font - mono ) ;
font-family : var ( - - font - mono ) ;
font-size : 12px ;
font-size : 12.5 px ;
}
}
/* ---------- Responsive niceties (desktop-focused, but readable narrower) ---------- */
/* ---------- Responsive ---------- */
@ media ( max-width : 720px ) {
@ media ( max-width : 720px ) {
main { padding : 20 px 16 px ; }
main { padding : 24 px 16 px 40 px ; }
header { padding : 14 px 16 px ; }
header { padding : 16 px 16 px ; }
. page-title h2 { font-size : 24 px ; }
. form-grid { grid-template-columns : 1 fr ; }
. form-grid { grid-template-columns : 1 fr ; }
. meta-row { grid-template-columns : 1 fr ; gap : 4 px ; padding : 12 px 14 px ; }
. meta-row { grid-template-columns : 1 fr ; gap : 4 px ; padding : 12 px 14 px ; }
. event-line { grid-template-columns : 1 fr ; gap : 2 px ; }
. event-line { grid-template-columns : 1 fr ; gap : 2 px ; }