@ -116,10 +116,68 @@
. hq-content { overflow-y : auto ; flex : 1 ; padding : 4 px 20 px 20 px ; }
. hq-scrim { display : none ; }
/* Dashboard section grid (Task 7). */
. dash-grid { display : grid ; grid-template-columns : 1 fr 1 fr ; gap : 0 24 px ; align-items : start ; }
. dash-grid > section { min-width : 0 ; }
@ media ( max-width : 1100px ) { . dash-grid { grid-template-columns : 1 fr ; } }
/ * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Dashboard cockpit ( D29 ) — a calm command view : a "Today" hero strip , the four
KPI stat cards , then a bento grid of section cards . Deliberately low-colour :
ink + warm neutrals , teal accent only for state / links , red reserved for real
failures . Scoped to . dash- * so the flat house style on every other page is
untouched . ( Replaces the old two-column . dash-grid . )
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = * /
. dash-hero {
border : 1px solid var ( --border ) ; border-radius : var ( --radius-lg ) ;
background : var ( --bg-raised ) ;
padding : 20px 22px ; margin : 6px 0 18px ;
display : flex ; gap : 24px ; align-items : center ; flex-wrap : wrap ;
}
. dash-hero-l { flex : 1 1 320 px ; min-width : 260 px ; }
. dash-hero-eyebrow { font-size : 11 px ; font-weight : 700 ; text-transform : uppercase ; letter-spacing : 0.08 em ; color : var ( - - text - dim ) ; }
. dash-hero h1 { font-size : 24 px ; margin : 7 px 0 4 px ; }
. dash-hero p { margin : 0 ; color : var ( - - text - dim ) ; max-width : 54 ch ; }
. dash-hero-r { display : flex ; flex-direction : column ; gap : 12 px ; align-items : flex-end ; }
. dash-money { text-align : right ; }
. dash-money . k { font-size : 11 px ; font-weight : 600 ; text-transform : uppercase ; letter-spacing : 0.06 em ; color : var ( - - text - dim ) ; }
. dash-money . v { font-size : 24 px ; font-weight : 600 ; letter-spacing : -0.01 em ; margin-top : 3 px ; }
. dash-hero-actions { display : flex ; gap : 8 px ; }
@ media ( max-width : 760px ) {
. dash-hero-r { align-items : flex-start ; width : 100 % ; }
. dash-money { text-align : left ; }
}
/* Everyone / Mine scope toggle (managerial only) */
. dash-seg { display : inline-flex ; background : var ( - - bg - inset ) ; border : 1 px solid var ( - - border ) ; border-radius : 999 px ; padding : 3 px ; gap : 2 px ; margin-top : 14 px ; }
. dash-seg button { border : none ; background : none ; cursor : pointer ; font : 600 12.5 px var ( - - font ) ; color : var ( - - text - dim ) ; padding : 5 px 14 px ; border-radius : 999 px ; }
. dash-seg button . on { background : var ( - - bg - raised ) ; color : var ( - - text ) ; box-shadow : var ( - - shadow - md ) ; }
/* Section header shared by the queue block and the bento cards */
. dash-head { display : flex ; align-items : center ; gap : 10 px ; padding : 2 px 0 10 px ; }
. dash-head h3 { font-size : 12 px ; font-weight : 700 ; text-transform : uppercase ; letter-spacing : 0.07 em ; color : var ( - - text - dim ) ; margin : 0 ; }
. dash-head . count { font-family : var ( - - mono ) ; font-size : 11 px ; color : var ( - - text - dim ) ; background : var ( - - bg - inset ) ; border-radius : 999 px ; padding : 1 px 8 px ; }
. dash-head a { margin-left : auto ; font-size : 12.5 px ; font-weight : 600 ; color : var ( - - accent - strong ) ; text-decoration : none ; }
. dash-head a : hover { text-decoration : underline ; }
[ data-theme = 'dark' ] . dash-head a { color : var ( - - accent ) ; }
/* the queue block sits above the bento; its DataTable keeps its own frame */
. dash-queue { margin : 18 px 0 10 px ; }
. dash-cap { margin-top : 8 px ; font-size : 12.5 px ; color : var ( - - text - dim ) ; }
/* bento grid of read-only section cards */
. dash-bento { display : grid ; grid-template-columns : repeat ( 2 , 1 fr ) ; gap : 14 px ; margin-top : 4 px ; align-items : start ; }
. dash-card { background : var ( - - bg - raised ) ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius ) ; display : flex ; flex-direction : column ; min-width : 0 ; }
. dash-card . dash-head { padding : 13 px 15 px 9 px ; }
/* Long lists scroll inside the card — reachable in full, never silently capped (rule 8). */
. dash-list { display : flex ; flex-direction : column ; max-height : 304 px ; overflow-y : auto ; }
. dash-empty { padding : 14 px 15 px 16 px ; color : var ( - - text - dim ) ; font-size : 13 px ; border-top : 1 px solid var ( - - border ) ; }
. dash-row { display : flex ; align-items : center ; gap : 12 px ; width : 100 % ; text-align : left ; padding : 9 px 15 px ; border-top : 1 px solid var ( - - border ) ; background : none ; color : inherit ; font : inherit ; }
button . dash-row { cursor : pointer ; }
button . dash-row : hover { background : var ( - - accent - soft ) ; }
. dash-row . rc { min-width : 0 ; flex : 1 ; }
. dash-row . t { display : block ; font-size : 13.5 px ; font-weight : 500 ; white-space : nowrap ; overflow : hidden ; text-overflow : ellipsis ; }
. dash-row . s { display : block ; font-size : 12 px ; color : var ( - - text - dim ) ; margin-top : 1 px ; white-space : nowrap ; overflow : hidden ; text-overflow : ellipsis ; }
. dash-row . r { text-align : right ; white-space : nowrap ; flex-shrink : 0 ; }
. dash-row . amt { display : block ; font-variant-numeric : tabular-nums lining-nums ; font-size : 13 px ; font-weight : 600 ; }
. dash-row . sub { display : block ; font-size : 11.5 px ; color : var ( - - text - dim ) ; margin-top : 1 px ; }
@ media ( max-width : 900px ) { . dash-bento { grid-template-columns : 1 fr ; } }
/* Login — split panel (Task 13). */
. login-wrap { height : 100 vh ; display : flex ; align-items : stretch ; justify-content : center ; }