@@ -25,7 +25,7 @@
}
* { box-sizing : border-box ; }
html , body { margin : 0 ; padding : 0 ; height : 100 % ; background : var ( - - bg ) ; color : var ( - - text ) ; font-family : var ( - - font - ui ) ; font-size : 14 px ; }
html , body { margin : 0 ; padding : 0 ; height : 100 % ; background : var ( - - bg ) ; color : var ( - - text ) ; font-family : var ( - - font - ui ) ; font-size : 15 px ; }
# shell {
display : grid ;
@@ -45,39 +45,39 @@ html, body { margin: 0; padding: 0; height: 100%; background: var(--bg); color:
# rightrail { grid-area : rail ; border-left : 1 px solid var ( - - border ) ; background : var ( - - panel ) ; overflow : hidden ; display : flex ; flex-direction : column ; }
/* topbar */
. brand { font-family : var ( - - font - display ) ; font-weight : 700 ; letter-spacing : 0.18 em ; font-size : 13 px ; color : var ( - - accent ) ; text-transform : uppercase ; padding : 0 6 px ; }
. brand { font-family : var ( - - font - display ) ; font-weight : 700 ; letter-spacing : 0.18 em ; font-size : 14 px ; color : var ( - - accent ) ; text-transform : uppercase ; padding : 0 6 px ; }
. topbar-search { flex : 1 ; max-width : 520 px ; }
. topbar-search input {
width : 100 % ; background : var ( - - bg ) ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ;
padding : 7 px 10 px ; border-radius : 4 px ; font-family : var ( - - font - ui ) ; font-size : 13 px ; outline : none ;
padding : 7 px 10 px ; border-radius : 4 px ; font-family : var ( - - font - ui ) ; font-size : 14 px ; outline : none ;
}
. topbar-search input : focus { border-color : var ( - - accent - dim ) ; }
. topbar-spacer { flex : 1 ; }
. icon-btn { background : transparent ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ; padding : 5 px 10 px ; border-radius : 4 px ; cursor : pointer ; font-size : 12 px ; }
. icon-btn { background : transparent ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ; padding : 5 px 10 px ; border-radius : 4 px ; cursor : pointer ; font-size : 13 px ; }
. icon-btn : hover { border-color : var ( - - accent - dim ) ; color : var ( - - accent ) ; }
. badge {
display : inline-block ; min-width : 16 px ; padding : 1 px 5 px ; border-radius : 8 px ;
background : var ( - - accent ) ; color : var ( - - bg ) ; font-size : 10 px ; font-weight : 700 ; text-align : center ; margin-left : 4 px ;
background : var ( - - accent ) ; color : var ( - - bg ) ; font-size : 11 px ; font-weight : 700 ; text-align : center ; margin-left : 4 px ;
}
/* sidebar */
. sb-section { padding : 8 px 12 px ; }
. sb-title { font-family : var ( - - font - display ) ; font-size : 10 px ; letter-spacing : 0.16 em ; color : var ( - - muted ) ; text-transform : uppercase ; padding : 6 px 4 px ; }
. sb-title { font-family : var ( - - font - display ) ; font-size : 11 px ; letter-spacing : 0.16 em ; color : var ( - - muted ) ; text-transform : uppercase ; padding : 6 px 4 px ; }
. sb-item {
display : flex ; align-items : center ; gap : 8 px ; padding : 6 px 10 px ; border-radius : 3 px ; cursor : pointer ;
color : var ( - - text ) ; text-decoration : none ; font-size : 13 px ;
color : var ( - - text ) ; text-decoration : none ; font-size : 14 px ;
}
. sb-item : hover { background : var ( - - panel -2 ) ; }
. sb-item . active { background : var ( - - accent - soft ) ; color : var ( - - accent ) ; }
. sb-item . caret { color : var ( - - muted ) ; width : 10 px ; text-align : center ; font-size : 10 px ; }
. sb-item . caret { color : var ( - - muted ) ; width : 10 px ; text-align : center ; font-size : 11 px ; }
. sb-children { padding-left : 18 px ; }
/* rightrail */
. rail-toggle {
height : var ( - - topbar - h ) ; border-bottom : 1 px solid var ( - - border ) ; display : flex ; align-items : center ; justify-content : center ;
cursor : pointer ; color : var ( - - muted ) ; font-size : 11 px ;
cursor : pointer ; color : var ( - - muted ) ; font-size : 12 px ;
}
. rail-body { flex : 1 ; padding : 14 px 14 px ; overflow-y : auto ; font-size : 13 px ; color : var ( - - muted ) ; }
. rail-body { flex : 1 ; padding : 14 px 14 px ; overflow-y : auto ; font-size : 14 px ; color : var ( - - muted ) ; }
# shell . rail-collapsed . rail-body { display : none ; }
/* main / views */
@@ -86,12 +86,12 @@ html, body { margin: 0; padding: 0; height: 100%; background: var(--bg); color:
. card {
background : var ( - - panel ) ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; padding : 16 px 18 px ; margin-bottom : 12 px ;
}
. card h3 { font-family : var ( - - font - display ) ; font-size : 14 px ; letter-spacing : 0.08 em ; text-transform : uppercase ; margin : 0 0 10 px ; color : var ( - - accent ) ; font-weight : 500 ; }
. card h3 { font-family : var ( - - font - display ) ; font-size : 15 px ; letter-spacing : 0.08 em ; text-transform : uppercase ; margin : 0 0 10 px ; color : var ( - - accent ) ; font-weight : 500 ; }
. row { display : flex ; gap : 16 px ; }
. row > * { flex : 1 ; min-width : 0 ; }
. muted { color : var ( - - muted ) ; }
. kbd { font-family : var ( - - font - mono ) ; background : var ( - - panel -2 ) ; padding : 1 px 6 px ; border : 1 px solid var ( - - border ) ; border-radius : 3 px ; font-size : 11 px ; }
pre , code { font-family : var ( - - font - mono ) ; font-size : 12 px ; }
. kbd { font-family : var ( - - font - mono ) ; background : var ( - - panel -2 ) ; padding : 1 px 6 px ; border : 1 px solid var ( - - border ) ; border-radius : 3 px ; font-size : 12 px ; }
pre , code { font-family : var ( - - font - mono ) ; font-size : 13 px ; }
pre { background : var ( - - panel -2 ) ; border : 1 px solid var ( - - border ) ; padding : 10 px 12 px ; border-radius : 4 px ; overflow-x : auto ; }
a { color : var ( - - accent ) ; text-decoration : none ; }
a : hover { text-decoration : underline ; }
@@ -100,17 +100,17 @@ hr { border: none; border-top: 1px solid var(--border); margin: 18px 0; }
/* form */
input [ type = text ] , input [ type = password ] , textarea , select {
background : var ( - - bg ) ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ;
padding : 6 px 8 px ; border-radius : 3 px ; font-family : var ( - - font - ui ) ; font-size : 13 px ; outline : none ;
padding : 6 px 8 px ; border-radius : 3 px ; font-family : var ( - - font - ui ) ; font-size : 14 px ; outline : none ;
}
input : focus , textarea : focus , select : focus { border-color : var ( - - accent - dim ) ; }
button . primary {
background : var ( - - accent - dim ) ; color : var ( - - text ) ; border : 1 px solid var ( - - accent ) ; padding : 6 px 14 px ;
border-radius : 3 px ; cursor : pointer ; font-family : var ( - - font - ui ) ; font-size : 13 px ;
border-radius : 3 px ; cursor : pointer ; font-family : var ( - - font - ui ) ; font-size : 14 px ;
}
button . primary : hover { background : var ( - - accent ) ; color : var ( - - bg ) ; }
button . ghost {
background : transparent ; color : var ( - - muted ) ; border : 1 px solid var ( - - border ) ; padding : 6 px 12 px ;
border-radius : 3 px ; cursor : pointer ; font-size : 13 px ;
border-radius : 3 px ; cursor : pointer ; font-size : 14 px ;
}
button . ghost : hover { color : var ( - - text ) ; border-color : var ( - - accent - dim ) ; }
. back-btn { margin-bottom : 12 px ; }
@@ -122,13 +122,13 @@ button.ghost:hover { color: var(--text); border-color: var(--accent-dim); }
font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : 0.03 em ; margin : 16 px 0 8 px ;
}
. md-preview h1 { font-size : 20 px ; } . md-preview h2 { font-size : 16 px ; }
. md-preview h3 { font-size : 14 px ; text-transform : uppercase ; }
. md-preview h3 { font-size : 15 px ; text-transform : uppercase ; }
. md-preview a { color : var ( - - accent ) ; }
. md-preview code { font-family : var ( - - font - mono ) ; background : var ( - - panel -2 ) ; padding : 1 px 5 px ; border : 1 px solid var ( - - border ) ; border-radius : 3 px ; font-size : 12 px ; }
. md-preview code { font-family : var ( - - font - mono ) ; background : var ( - - panel -2 ) ; padding : 1 px 5 px ; border : 1 px solid var ( - - border ) ; border-radius : 3 px ; font-size : 13 px ; }
. md-preview pre { background : var ( - - panel -2 ) ; border : 1 px solid var ( - - border ) ; border-radius : 5 px ; padding : 12 px ; overflow-x : auto ; }
. md-preview pre code { border : none ; background : none ; padding : 0 ; }
. md-preview blockquote { border-left : 2 px solid var ( - - accent - dim ) ; margin : 8 px 0 ; padding : 2 px 12 px ; color : var ( - - muted ) ; }
. md-preview table { border-collapse : collapse ; width : 100 % ; margin : 12 px 0 ; font-size : 13 px ; }
. md-preview table { border-collapse : collapse ; width : 100 % ; margin : 12 px 0 ; font-size : 14 px ; }
. md-preview th , . md-preview td { border : 1 px solid var ( - - border ) ; padding : 6 px 10 px ; text-align : left ; vertical-align : top ; }
. md-preview th { background : var ( - - panel -2 ) ; color : var ( - - accent ) ; font-weight : 600 ; letter-spacing : 0.02 em ; }
. md-preview tbody tr : nth-child ( even ) td { background : rgba ( 255 , 255 , 255 , 0.02 ) ; }
@@ -138,26 +138,26 @@ button.ghost:hover { color: var(--text); border-color: var(--accent-dim); }
. lb-chat { display : flex ; flex-direction : column ; height : 70 vh ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; background : var ( - - panel ) ; overflow : hidden ; }
. lb-chat . lb-log { flex : 1 ; overflow-y : auto ; padding : 14 px ; }
. lb-actions { display : flex ; flex-direction : column ; gap : 8 px ; }
. lb-sec { font-family : var ( - - font - display ) ; font-size : 12 px ; text-transform : uppercase ; letter-spacing : 0.08 em ; color : var ( - - accent ) ; margin : 6 px 0 2 px ; }
. lb-sec { font-family : var ( - - font - display ) ; font-size : 13 px ; text-transform : uppercase ; letter-spacing : 0.08 em ; color : var ( - - accent ) ; margin : 6 px 0 2 px ; }
. lb-cards { display : grid ; grid-template-columns : repeat ( auto - fill , minmax ( 150 px , 1 fr ) ) ; gap : 10 px ; }
. lb-card { padding : 12 px ; margin : 0 ; }
. lb-pending-card { padding : 12 px ; margin : 0 ; border-color : var ( - - accent - dim ) ; }
. lb-card-title { font-size : 12.5 px ; color : var ( - - text ) ; margin-bottom : 10 px ; word-break : break-word ; }
. lb-btn-row { display : flex ; gap : 8 px ; flex-wrap : wrap ; }
. lb-act { padding : 5 px 12 px ; border-radius : 3 px ; cursor : pointer ; font-size : 12 px ; font-family : var ( - - font - ui ) ; border : 1 px solid var ( - - border ) ; background : transparent ; color : var ( - - muted ) ; }
. lb-act { padding : 5 px 12 px ; border-radius : 3 px ; cursor : pointer ; font-size : 13 px ; font-family : var ( - - font - ui ) ; border : 1 px solid var ( - - border ) ; background : transparent ; color : var ( - - muted ) ; }
. lb-act . safe { color : var ( - - ok ) ; }
. lb-act . safe : hover { border-color : var ( - - ok ) ; color : var ( - - ok ) ; }
. lb-act . risky { color : var ( - - accent ) ; background : var ( - - accent - soft ) ; border-color : var ( - - accent - dim ) ; }
. lb-act . risky : hover { background : var ( - - accent - dim ) ; color : var ( - - text ) ; }
. lb-act : disabled { opacity : 0.5 ; cursor : default ; }
. lb-toasts { position : fixed ; bottom : 16 px ; right : 16 px ; display : flex ; flex-direction : column ; gap : 6 px ; z-index : 60 ; }
. lb-toast { background : var ( - - panel -2 ) ; border : 1 px solid var ( - - accent - dim ) ; color : var ( - - text ) ; padding : 8 px 12 px ; border-radius : 4 px ; font-size : 12 px ; box-shadow : 0 4 px 16 px rgba ( 0 , 0 , 0 , 0.45 ) ; }
. lb-toast { background : var ( - - panel -2 ) ; border : 1 px solid var ( - - accent - dim ) ; color : var ( - - text ) ; padding : 8 px 12 px ; border-radius : 4 px ; font-size : 13 px ; box-shadow : 0 4 px 16 px rgba ( 0 , 0 , 0 , 0.45 ) ; }
. lb-toast . err { border-color : var ( - - bad ) ; color : var ( - - bad ) ; }
@ media ( max-width : 900px ) { . lb-grid { grid-template-columns : 1 fr ; } }
/* Terminal tab (embedded ttyd) */
. term-bar { display : flex ; align-items : center ; gap : 12 px ; margin-bottom : 10 px ; }
. term-title { font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : 0.08 em ; font-size : 14 px ; }
. term-title { font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : 0.08 em ; font-size : 15 px ; }
. term-frame { width : 100 % ; height : calc ( 100 vh - 100 px ) ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; background : var ( - - bg ) ; display : block ; }
/* Doc/space header bar: back + breadcrumb on the left, export on the right. */
@@ -168,33 +168,100 @@ button.ghost:hover { color: var(--text); border-color: var(--accent-dim); }
. ed-controls { display : inline-flex ; align-items : center ; gap : 8 px ; }
/* Breadcrumb: Space › parent › current — sized + themed to sit inline with the back button */
. crumbs { display : flex ; align-items : center ; gap : 7 px ; flex-wrap : wrap ; font-size : 13 px ; font-family : var ( - - font - ui ) ; line-height : 1 ; }
. crumbs { display : flex ; align-items : center ; gap : 7 px ; flex-wrap : wrap ; font-size : 14 px ; font-family : var ( - - font - ui ) ; line-height : 1 ; }
. crumb { color : var ( - - muted ) ; text-decoration : none ; }
. crumb : hover { color : var ( - - accent ) ; }
. crumb . current { color : var ( - - text ) ; }
. crumb-sep { color : var ( - - accent - dim ) ; font-size : 14 px ; }
. crumb-sep { color : var ( - - accent - dim ) ; font-size : 15 px ; }
/* Export dropdown */
. exp-menu { position : relative ; }
. exp-list { position : absolute ; right : 0 ; top : calc ( 100 % + 4 px ) ; background : var ( - - panel -2 ) ; border : 1 px solid var ( - - border ) ; border-radius : 5 px ; padding : 4 px ; min-width : 168 px ; display : none ; z-index : 40 ; box-shadow : 0 6 px 20 px rgba ( 0 , 0 , 0 , 0.5 ) ; }
. exp-menu . open . exp-list { display : block ; }
. exp-list button { display : block ; width : 100 % ; text-align : left ; background : transparent ; border : none ; color : var ( - - text ) ; padding : 7 px 10 px ; border-radius : 3 px ; cursor : pointer ; font-size : 12 px ; font-family : var ( - - font - ui ) ; }
. exp-list button { display : block ; width : 100 % ; text-align : left ; background : transparent ; border : none ; color : var ( - - text ) ; padding : 7 px 10 px ; border-radius : 3 px ; cursor : pointer ; font-size : 13 px ; font-family : var ( - - font - ui ) ; }
. exp-list button : hover { background : var ( - - accent - soft ) ; color : var ( - - accent ) ; }
. rev-list { max-height : 340 px ; overflow-y : auto ; min-width : 220 px ; }
/* Revision viewer modal */
. rev-overlay { position : fixed ; inset : 0 ; background : rgba ( 0 , 0 , 0 , 0.62 ) ; z-index : 100 ; display : flex ; align-items : center ; justify-content : center ; padding : 24 px ; }
. rev-modal { background : var ( - - panel ) ; border : 1 px solid var ( - - border ) ; border-radius : 8 px ; width : min ( 820 px , 94 vw ) ; max-height : 86 vh ; display : flex ; flex-direction : column ; box-shadow : 0 14 px 50 px rgba ( 0 , 0 , 0 , 0.6 ) ; }
. rev-modal-head { display : flex ; align-items : center ; justify-content : space-between ; padding : 12 px 16 px ; border-bottom : 1 px solid var ( - - border ) ; font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : 0.04 em ; font-size : 13 px ; }
. rev-modal-head { display : flex ; align-items : center ; justify-content : space-between ; padding : 12 px 16 px ; border-bottom : 1 px solid var ( - - border ) ; font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : 0.04 em ; font-size : 14 px ; }
. rev-modal . md-preview { padding : 16 px 20 px ; overflow-y : auto ; flex : 1 ; }
. rev-modal-foot { padding : 12 px 16 px ; border-top : 1 px solid var ( - - border ) ; display : flex ; justify-content : flex-end ; }
/* AI Usage card */
. aiu-sec { margin-bottom : 12 px ; }
. aiu-h { font-family : var ( - - font - display ) ; font-size : 10 px ; text-transform : uppercase ; letter-spacing : 0.14 em ; color : var ( - - muted ) ; margin-bottom : 6 px ; border-bottom : 1 px solid var ( - - border ) ; padding-bottom : 4 px ; }
. aiu-link { display : inline-block ; margin-top : 4 px ; font-size : 11 px ; color : var ( - - accent ) ; text-decoration : none ; }
. aiu-h { font-family : var ( - - font - display ) ; font-size : 11 px ; text-transform : uppercase ; letter-spacing : 0.14 em ; color : var ( - - muted ) ; margin-bottom : 6 px ; border-bottom : 1 px solid var ( - - border ) ; padding-bottom : 4 px ; }
. aiu-link { display : inline-block ; margin-top : 4 px ; font-size : 12 px ; color : var ( - - accent ) ; text-decoration : none ; }
. aiu-link : hover { text-decoration : underline ; }
/* ── Themed scrollbars (blackflame) ── */
* { scrollbar-width : thin ; scrollbar-color : var ( - - accent - dim ) var ( - - panel ) ; }
:: -webkit-scrollbar { width : 11 px ; height : 11 px ; }
:: -webkit-scrollbar-track { background : var ( - - panel ) ; }
:: -webkit-scrollbar-thumb { background : var ( - - accent - soft ) ; border : 2 px solid var ( - - panel ) ; border-radius : 6 px ; }
:: -webkit-scrollbar-thumb : hover { background : var ( - - accent - dim ) ; }
:: -webkit-scrollbar-corner { background : var ( - - panel ) ; }
/* ── Topbar: themed, a touch larger + bolder ── */
: root { --topbar-h : 54 px ; }
# topbar { background : linear-gradient ( 180 deg , #17131b , var ( - - panel ) ) ; border-bottom : 1 px solid var ( - - accent - soft ) ; box-shadow : 0 1 px 0 rgba ( 255 , 79 , 46 , 0.10 ) ; }
. brand { font-size : 18 px ; letter-spacing : 0.22 em ; }
. icon-btn { font-size : 14 px ; font-weight : 600 ; padding : 7 px 13 px ; color : var ( - - text ) ; }
. icon-btn : hover { background : var ( - - accent - soft ) ; border-color : var ( - - accent - dim ) ; color : var ( - - accent ) ; }
. topbar-search input { font-size : 14 px ; padding : 8 px 12 px ; }
. chrome-toggle { width : 38 px ; height : 34 px ; font-size : 17 px ; }
/* card header row (h3 + action button) */
. card-head { display : flex ; align-items : center ; gap : 12 px ; margin-bottom : 12 px ; }
. card-head h3 { margin : 0 ; }
. card-head . primary { margin-left : auto ; }
/* Project cards (per-space) */
. proj-list { display : flex ; flex-direction : column ; gap : 8 px ; }
. proj-card { border : 1 px solid var ( - - border ) ; border-radius : 7 px ; background : var ( - - panel -2 ) ; overflow : hidden ; }
. proj-head { display : flex ; align-items : center ; gap : 10 px ; padding : 10 px 12 px ; cursor : pointer ; }
. proj-head : hover { background : rgba ( 255 , 255 , 255 , 0.015 ) ; }
. proj-chev { color : var ( - - muted ) ; transition : transform .18 s ; flex : none ; }
. proj-card . open . proj-chev { transform : rotate ( 90 deg ) ; color : var ( - - accent ) ; }
. proj-meta { flex : 1 ; min-width : 0 ; }
. proj-title { font-size : 15 px ; color : var ( - - text ) ; }
. proj-desc { font-size : 13 px ; color : var ( - - muted ) ; margin-top : 2 px ; }
. proj-actions { display : flex ; align-items : center ; gap : 6 px ; flex : none ; }
. proj-status { background : var ( - - panel ) ; border : 1 px solid var ( - - border ) ; color : var ( - - muted ) ; border-radius : 4 px ; font-size : 12 px ; padding : 3 px 6 px ; font-family : var ( - - font - ui ) ; cursor : pointer ; }
. proj-status . st-active { color : var ( - - ok ) ; border-color : var ( - - ok ) ; }
. proj-status . st-paused { color : var ( - - warn ) ; border-color : var ( - - warn ) ; }
. proj-status . st-done { color : var ( - - muted ) ; }
. proj-status . st-abandoned { color : var ( - - bad ) ; border-color : var ( - - bad ) ; }
. proj-status . st-idea { color : var ( - - accent ) ; border-color : var ( - - accent - dim ) ; }
. proj-btn { background : transparent ; border : 1 px solid var ( - - border ) ; color : var ( - - muted ) ; border-radius : 4 px ; font-size : 12 px ; padding : 4 px 9 px ; cursor : pointer ; font-family : var ( - - font - ui ) ; }
. proj-btn : hover { color : var ( - - accent ) ; border-color : var ( - - accent - dim ) ; }
. proj-btn . danger : hover { color : var ( - - bad ) ; border-color : var ( - - bad ) ; }
. proj-btn . busy { color : var ( - - accent ) ; border-color : var ( - - accent - dim ) ; }
. proj-panel { padding : 0 14 px 14 px 34 px ; border-top : 1 px solid var ( - - border ) ; }
. proj-section-h { font-family : var ( - - font - display ) ; font-size : 11 px ; text-transform : uppercase ; letter-spacing : .12 em ; color : var ( - - muted ) ; margin : 12 px 0 8 px ; }
/* Project / generic modal */
. pm-modal { background : var ( - - panel ) ; border : 1 px solid var ( - - border ) ; border-radius : 8 px ; width : min ( 480 px , 94 vw ) ; padding : 20 px 22 px ; display : flex ; flex-direction : column ; gap : 8 px ; box-shadow : 0 14 px 50 px rgba ( 0 , 0 , 0 , .6 ) ; }
. pm-head { font-family : var ( - - font - display ) ; color : var ( - - accent ) ; letter-spacing : .04 em ; font-size : 17 px ; margin-bottom : 6 px ; }
. pm-label { font-size : 12 px ; text-transform : uppercase ; letter-spacing : .08 em ; color : var ( - - muted ) ; margin-top : 6 px ; }
. pm-input { width : 100 % ; background : var ( - - bg ) ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ; border-radius : 5 px ; padding : 7 px 9 px ; font-family : var ( - - font - ui ) ; font-size : 14 px ; }
. pm-input : focus { border-color : var ( - - accent - dim ) ; outline : none ; }
. pm-foot { display : flex ; gap : 10 px ; justify-content : flex-end ; margin-top : 12 px ; }
/* Settings */
. settings-card { max-width : 740 px ; }
. settings-sub { margin : -4 px 0 12 px ; font-size : 13 px ; }
. settings-row { display : flex ; align-items : center ; gap : 10 px ; padding : 8 px 0 ; border-bottom : 1 px solid var ( - - border ) ; }
. settings-row : last-child { border-bottom : none ; }
. settings-row . revoked { opacity : .5 ; }
. settings-create { flex-wrap : wrap ; }
. settings-label { color : var ( - - text ) ; font-size : 14 px ; min-width : 120 px ; }
. settings-value { flex : 1 ; font-size : 13 px ; }
. token-out { min-height : 4 px ; }
. token-reveal { background : var ( - - accent - soft ) ; border : 1 px solid var ( - - accent - dim ) ; border-radius : 5 px ; padding : 8 px 10 px ; font-size : 13 px ; margin : 8 px 0 ; word-break : break-all ; }
. token-reveal code { color : var ( - - accent ) ; font-family : var ( - - font - mono ) ; }
/* modal */
. modal-backdrop { position : fixed ; inset : 0 ; background : rgba ( 0 , 0 , 0 , 0.6 ) ; display : flex ; align-items : center ; justify-content : center ; z-index : 100 ; }
. modal {
@@ -209,7 +276,7 @@ ul.plain li { padding: 6px 0; border-bottom: 1px solid var(--border); }
ul . plain li : last-child { border-bottom : none ; }
/* badges (status) */
. status { display : inline-block ; padding : 1 px 6 px ; border-radius : 8 px ; font-size : 10 px ; text-transform : uppercase ; letter-spacing : 0.08 em ; border : 1 px solid var ( - - border ) ; color : var ( - - muted ) ; }
. status { display : inline-block ; padding : 1 px 6 px ; border-radius : 8 px ; font-size : 11 px ; text-transform : uppercase ; letter-spacing : 0.08 em ; border : 1 px solid var ( - - border ) ; color : var ( - - muted ) ; }
. status . ok { color : var ( - - ok ) ; border-color : var ( - - ok ) ; }
. status . warn { color : var ( - - warn ) ; border-color : var ( - - warn ) ; }
. status . bad { color : var ( - - bad ) ; border-color : var ( - - bad ) ; }
@@ -217,9 +284,9 @@ ul.plain li:last-child { border-bottom: none; }
/* search results */
. search-group { margin-bottom : 22 px ; }
. search-group . group-h { font-family : var ( - - font - display ) ; font-size : 11 px ; letter-spacing : 0.18 em ; color : var ( - - accent ) ; text-transform : uppercase ; margin-bottom : 6 px ; }
. search-group . group-h { font-family : var ( - - font - display ) ; font-size : 12 px ; letter-spacing : 0.18 em ; color : var ( - - accent ) ; text-transform : uppercase ; margin-bottom : 6 px ; }
. search-hit { padding : 8 px 10 px ; border : 1 px solid var ( - - border ) ; border-radius : 3 px ; margin-bottom : 6 px ; background : var ( - - panel ) ; }
. search-hit . hit-meta { color : var ( - - muted ) ; font-size : 11 px ; }
. search-hit . hit-meta { color : var ( - - muted ) ; font-size : 12 px ; }
/* ── Plan 5: right-rail companion chat ──────────────────────────────────── */
. rail-chat { display : flex ; flex-direction : column ; height : 100 % ; }
@@ -228,25 +295,25 @@ ul.plain li:last-child { border-bottom: none; }
. rail-hd . chev { cursor : pointer ; color : #5b6478 ; }
. rail-log { flex : 1 ; overflow-y : auto ; padding : 12 px ; display : flex ; flex-direction : column ; gap : 10 px ; }
. turn { display : flex ; flex-direction : column ; max-width : 84 % ; }
. turn . lbl { font-size : 9 .5px ; letter-spacing : .12 em ; margin-bottom : 3 px ; }
. turn . lbl { font-size : 10 .5 px ; letter-spacing : .12 em ; margin-bottom : 3 px ; }
. turn . msg { line-height : 1.4 ; padding : 6 px 10 px ; border-radius : 8 px ; background : #141826 ; }
. turn . you { align-self : flex-end ; align-items : flex-end ; }
. turn . you . lbl { color : #6f7ce0 ; } . turn . you . msg { border-right : 2 px solid #6f7ce0 ; }
. turn . ai { align-self : flex-start ; } . turn . ai . lbl { color : var ( - - accent , #b69cff ) ; }
. turn . ai . msg { border-left : 2 px solid var ( - - accent , #b69cff ) ; }
. tools { align-self : flex-start ; }
. tools . chip { font-family : ui-monospace , Menlo , monospace ; font-size : 10 .5 px ; color : #7d869b ; }
. tools . chip { font-family : ui-monospace , Menlo , monospace ; font-size : 11 .5 px ; color : #7d869b ; }
. tools . chip . err { color : #e08a8a ; }
. draftx { align-self : flex-start ; max-width : 90 % ; border : 1 px solid #3a2f5e ; background : #1a1530 ; border-radius : 9 px ; padding : 9 px 11 px ; }
. draftx . dh { font-size : 9 .5px ; text-transform : uppercase ; letter-spacing : .1 em ; color : #9b7dff ; }
. draftx . dh { font-size : 10 .5 px ; text-transform : uppercase ; letter-spacing : .1 em ; color : #9b7dff ; }
. draftx . dt { color : #e3e0f5 ; margin : 4 px 0 9 px ; }
. draftx . row { display : flex ; gap : 6 px ; }
. draftx . ok { background : #2a6f4f ; color : #d9ffe9 ; border : none ; border-radius : 6 px ; padding : 4 px 12 px ; }
. draftx . no { background : #2a2f3d ; color : #aeb6c7 ; border : none ; border-radius : 6 px ; padding : 4 px 12 px ; }
. draftx . resolved { opacity : .55 ; } . resolved-tag { font-size : 10 px ; text-transform : uppercase ; color : #7d869b ; margin-top : 6 px ; }
. draftx . resolved { opacity : .55 ; } . resolved-tag { font-size : 11 px ; text-transform : uppercase ; color : #7d869b ; margin-top : 6 px ; }
. rail-inputwrap { border-top : 1 px solid var ( - - border , #262b38 ) ; padding : 9 px 12 px ; }
. rail-input { width : 100 % ; resize : none ; background : #0c0e14 ; color : #c9d1e0 ; border : 1 px solid #262b38 ; border-radius : 8 px ; padding : 7 px 9 px ; }
. err { color : #e08a8a ; font-size : 12 px ; }
. err { color : #e08a8a ; font-size : 13 px ; }
# shell . rail-collapsed . rail-chat { display : none ; }
/* ===== Sacred Valley (Plan 6) ===== */
@@ -260,9 +327,9 @@ ul.plain li:last-child { border-bottom: none; }
@ media ( max-width : 700px ) { # sv-cards { grid-template-columns : 1 fr ; } . sv-card { grid-column : 1 / -1 !important ; } }
. sv-ed-span { display : inline-flex ; align-items : center ; gap : 3 px ; }
. sv-ed-step { width : 18 px ; height : 20 px ; border : 1 px solid var ( - - border ) ; background : transparent ; color : var ( - - muted ) ;
border-radius : 3 px ; font-size : 13 px ; line-height : 1 ; cursor : pointer ; padding : 0 ; }
border-radius : 3 px ; font-size : 14 px ; line-height : 1 ; cursor : pointer ; padding : 0 ; }
. sv-ed-step : hover { color : var ( - - accent ) ; border-color : var ( - - accent - dim ) ; }
. sv-span-val { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - text ) ; min-width : 14 px ; text-align : center ; }
. sv-span-val { font-family : var ( - - font - mono ) ; font-size : 12 px ; color : var ( - - text ) ; min-width : 14 px ; text-align : center ; }
. sv-card {
position : relative ; border : 1 px solid #2c242a ; border-radius : 10 px ; padding : 16 px 18 px ;
@@ -283,18 +350,18 @@ ul.plain li:last-child { border-bottom: none; }
. sv-card . dragging { opacity : .5 ; }
. sv-card . drag-over { border-color : var ( - - accent ) ; }
. sv-card-title {
font-family : var ( - - font - display ) ; font-size : 12 px ; letter-spacing : .16 em ; text-transform : uppercase ;
font-family : var ( - - font - display ) ; font-size : 13 px ; letter-spacing : .16 em ; text-transform : uppercase ;
color : var ( - - text ) ; padding-bottom : 7 px ; margin-bottom : 12 px ;
border-bottom : 1 px solid transparent ; border-image : linear-gradient ( 90 deg , var ( - - accent ) , transparent 60 % ) 1 ;
cursor : grab ;
}
. sv-row { display : flex ; justify-content : space-between ; align-items : center ; font-family : var ( - - font - mono ) ; font-size : 11 px ; margin : 7 px 0 ; }
. sv-row { display : flex ; justify-content : space-between ; align-items : center ; font-family : var ( - - font - mono ) ; font-size : 12 px ; margin : 7 px 0 ; }
. sv-row . k { color : var ( - - muted ) ; letter-spacing : .04 em ; }
. sv-bar { height : 5 px ; border-radius : 3 px ; background : #221820 ; overflow : hidden ; margin-top : 3 px ; }
. sv-bar > i { display : block ; height : 100 % ; border-radius : 3 px ; background : linear-gradient ( 90 deg , var ( - - accent - dim ) , var ( - - accent ) ) ; transition : box-shadow .35 s ; }
. sv-card : hover . sv-bar > i { box-shadow : 0 0 9 px rgba ( 255 , 79 , 46 , .55 ) ; }
. sv-search-input { width : 100 % ; background : #0d0d13 ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; padding : 8 px 10 px ; color : var ( - - text ) ; font-family : var ( - - font - mono ) ; font-size : 12 px }
. sv-run { background : var ( - - accent - soft ) ; border : 1 px solid var ( - - accent - dim ) ; color : var ( - - accent ) ; border-radius : 5 px ; padding : 3 px 10 px ; font-family : var ( - - font - ui ) ; font-size : 11 px ; cursor : pointer }
. sv-search-input { width : 100 % ; background : #0d0d13 ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; padding : 8 px 10 px ; color : var ( - - text ) ; font-family : var ( - - font - mono ) ; font-size : 13 px }
. sv-run { background : var ( - - accent - soft ) ; border : 1 px solid var ( - - accent - dim ) ; color : var ( - - accent ) ; border-radius : 5 px ; padding : 3 px 10 px ; font-family : var ( - - font - ui ) ; font-size : 12 px ; cursor : pointer }
/* ===== Little Blue health band (Task 22) ===== */
# sv-health { margin-top : 28 px ; }
@@ -302,26 +369,26 @@ ul.plain li:last-child { border-bottom: none; }
. lb-av { width : 46 px ; height : 46 px ; filter : drop-shadow ( 0 0 10 px rgba ( 125 , 211 , 216 , .4 ) ) ; animation : lb-bob 4 s ease-in-out infinite ; }
@ keyframes lb-bob { 0 % , 100 % { transform : translateY ( 0 ) ; } 50 % { transform : translateY ( -3 px ) ; } }
. lb-name { font-family : var ( - - font - display ) ; letter-spacing : .08 em ; font-size : 15 px ; color : var ( - - text ) ; }
. lb-sub { font-family : var ( - - font - body ) ; font-style : italic ; color : var ( - - lb ) ; font-size : 14 px ; }
. lb-sub { font-family : var ( - - font - body ) ; font-style : italic ; color : var ( - - lb ) ; font-size : 15 px ; }
. lb-group { margin : 14 px 0 8 px ; display : flex ; align-items : center ; gap : 10 px ; }
. lb-group . gname { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 11 px ; color : var ( - - muted ) ; }
. lb-group . gcount { font-family : var ( - - font - mono ) ; font-size : 10 px ; color : var ( - - lb ) ; }
. lb-group . gname { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 12 px ; color : var ( - - muted ) ; }
. lb-group . gcount { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - lb ) ; }
. lb-group . line { flex : 1 ; height : 1 px ; background : linear-gradient ( 90 deg , rgba ( 125 , 211 , 216 , .25 ) , transparent ) ; }
. tiles { display : grid ; grid-template-columns : repeat ( auto - fill , minmax ( 150 px , 1 fr ) ) ; gap : 10 px ; }
. tile { display : flex ; align-items : center ; gap : 10 px ; border : 1 px solid var ( - - border ) ; border-radius : 8 px ; padding : 10 px 12 px ;
background : linear-gradient ( 160 deg , #14141c , #101017 ) ; text-decoration : none ; color : var ( - - text ) ; transition : border-color .25 s , transform .25 s ; }
. tile : hover { transform : translateY ( -2 px ) ; border-color : #37404a ; }
. tile-icon , . tile-icon-fb { width : 26 px ; height : 26 px ; border-radius : 6 px ; flex : none ; }
. tile-icon-fb { display : grid ; place-items : center ; background : #20202a ; color : var ( - - muted ) ; font-family : var ( - - font - mono ) ; font-size : 13 px ; }
. tile-icon-fb { display : grid ; place-items : center ; background : #20202a ; color : var ( - - muted ) ; font-family : var ( - - font - mono ) ; font-size : 14 px ; }
. tile-main { flex : 1 ; min-width : 0 ; }
. tile-nm { font-family : var ( - - font - mono ) ; font-size : 12 px ; display : flex ; align-items : center ; gap : 7 px ; }
. tile-host { font-family : var ( - - font - mono ) ; font-size : 10 px ; color : var ( - - muted ) ; margin-top : 4 px ; }
. tile-nm { font-family : var ( - - font - mono ) ; font-size : 13 px ; display : flex ; align-items : center ; gap : 7 px ; }
. tile-host { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - muted ) ; margin-top : 4 px ; }
. tile . dot { width : 8 px ; height : 8 px ; border-radius : 50 % ; }
. tile . status-ok . dot { background : var ( - - ok ) ; box-shadow : 0 0 7 px var ( - - ok ) ; }
. tile . status-warn . dot { background : var ( - - warn ) ; box-shadow : 0 0 7 px var ( - - warn ) ; }
. tile . status-down . dot { background : var ( - - bad ) ; box-shadow : 0 0 7 px var ( - - bad ) ; }
. tile . status-unknown . dot { background : var ( - - muted ) ; }
. tile-go { color : var ( - - lb ) ; font-size : 11 px ; opacity : 0 ; transition : opacity .25 s ; }
. tile-go { color : var ( - - lb ) ; font-size : 12 px ; opacity : 0 ; transition : opacity .25 s ; }
. tile : hover . tile-go { opacity : 1 ; }
/* ===== Collapsible chrome + responsive layout (Plan 6 polish) ===== */
@@ -389,39 +456,39 @@ body.drawer-open #scrim { opacity: 1; pointer-events: auto; }
/* ===== Network · Devices band (separate from Little Blue's health band) ===== */
# sv-devices { margin-top : 30 px ; padding-top : 22 px ; border-top : 1 px dashed var ( - - border ) ; }
. dv-hd { display : flex ; align-items : baseline ; gap : 12 px ; }
. dv-title { font-family : var ( - - font - display ) ; letter-spacing : .14 em ; text-transform : uppercase ; font-size : 13 px ; color : var ( - - muted ) ; }
. dv-count { font-family : var ( - - font - mono ) ; font-size : 10 px ; color : var ( - - muted ) ; }
. dv-note { font-family : var ( - - font - body ) ; font-style : italic ; color : var ( - - muted ) ; font-size : 13 px ; margin : 4 px 0 6 px ; opacity : .8 ; }
. dv-title { font-family : var ( - - font - display ) ; letter-spacing : .14 em ; text-transform : uppercase ; font-size : 14 px ; color : var ( - - muted ) ; }
. dv-count { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - muted ) ; }
. dv-note { font-family : var ( - - font - body ) ; font-style : italic ; color : var ( - - muted ) ; font-size : 14 px ; margin : 4 px 0 6 px ; opacity : .8 ; }
. dv-section { margin-top : 12 px ; }
. dv-group { display : flex ; align-items : center ; gap : 10 px ; margin : 10 px 0 7 px ; }
. dv-group . gname { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 10 px ; color : var ( - - muted ) ; }
. dv-group . gcount { font-family : var ( - - font - mono ) ; font-size : 10 px ; color : var ( - - muted ) ; }
. dv-group . gname { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 11 px ; color : var ( - - muted ) ; }
. dv-group . gcount { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - muted ) ; }
. dv-group . line { flex : 1 ; height : 1 px ; background : linear-gradient ( 90 deg , var ( - - border ) , transparent ) ; }
. dv-tiles { display : grid ; grid-template-columns : repeat ( auto - fill , minmax ( 170 px , 1 fr ) ) ; gap : 8 px ; }
. dv-tile {
border : 1 px solid var ( - - border ) ; border-radius : 7 px ; padding : 8 px 11 px ; background : #101017 ;
display : flex ; flex-direction : column ; gap : 2 px ;
}
. dv-tile . dv-nm { font-family : var ( - - font - ui ) ; font-size : 12 px ; color : var ( - - text ) ; }
. dv-tile . dv-ip { font-family : var ( - - font - mono ) ; font-size : 11 px ; color : var ( - - muted ) ; }
. dv-tile . dv-vendor { font-family : var ( - - font - ui ) ; font-size : 10 px ; color : var ( - - muted ) ; opacity : .7 ; }
. dv-tile . dv-nm { font-family : var ( - - font - ui ) ; font-size : 13 px ; color : var ( - - text ) ; }
. dv-tile . dv-ip { font-family : var ( - - font - mono ) ; font-size : 12 px ; color : var ( - - muted ) ; }
. dv-tile . dv-vendor { font-family : var ( - - font - ui ) ; font-size : 11 px ; color : var ( - - muted ) ; opacity : .7 ; }
. dv-tile . flag { border-color : var ( - - bad ) ; background : #1a1012 ; }
. dv-tile . flag . dv-nm { color : var ( - - bad ) ; }
/* ===== Discovered services + scan (Plan: DB-backed registry) ===== */
. lb-scan { background : var ( - - accent - soft ) ; border : 1 px solid var ( - - accent - dim ) ; color : var ( - - accent ) ;
border-radius : 5 px ; padding : 4 px 12 px ; font-family : var ( - - font - ui ) ; font-size : 11 px ; cursor : pointer ; flex : none ; }
border-radius : 5 px ; padding : 4 px 12 px ; font-family : var ( - - font - ui ) ; font-size : 12 px ; cursor : pointer ; flex : none ; }
. lb-scan : hover { background : var ( - - accent - dim ) ; color : var ( - - text ) ; }
. tile . disc { border-style : dashed ; }
. disc-add { margin-left : auto ; width : 22 px ; height : 22 px ; border-radius : 50 % ; flex : none ;
border : 1 px solid var ( - - accent - dim ) ; background : transparent ; color : var ( - - accent ) ; font-size : 14 px ; line-height : 1 ; cursor : pointer ; }
border : 1 px solid var ( - - accent - dim ) ; background : transparent ; color : var ( - - accent ) ; font-size : 15 px ; line-height : 1 ; cursor : pointer ; }
. disc-add : hover { background : var ( - - accent ) ; color : var ( - - bg ) ; }
/* ===== Sacred Valley — edit layout mode ===== */
. sv-head { display : flex ; align-items : center ; justify-content : space-between ; gap : 12 px ; margin-bottom : 22 px ; }
. sv-toolbar { display : flex ; gap : 8 px ; flex : none ; }
. sv-edit-btn , . sv-reset-btn { background : transparent ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ;
padding : 5 px 12 px ; border-radius : 5 px ; cursor : pointer ; font-family : var ( - - font - ui ) ; font-size : 12 px ; }
padding : 5 px 12 px ; border-radius : 5 px ; cursor : pointer ; font-family : var ( - - font - ui ) ; font-size : 13 px ; }
. sv-edit-btn : hover , . sv-reset-btn : hover { border-color : var ( - - accent - dim ) ; color : var ( - - accent ) ; }
. sv-card-title { cursor : default ; } /* drag is via the grip now, not the title */
@@ -430,22 +497,22 @@ body.drawer-open #scrim { opacity: 1; pointer-events: auto; }
background : rgba ( 10 , 10 , 14 , .88 ) ; border : 1 px solid var ( - - border ) ; border-radius : 6 px ; padding : 3 px 5 px ; }
# sv-cards . editing . sv-card-edit { display : flex ; }
# sv-cards . editing . sv-card { outline : 1 px dashed var ( - - accent - dim ) ; }
. sv-grip { cursor : grab ; color : var ( - - muted ) ; font-size : 13 px ; padding : 0 2 px ; user-select : none ; }
. sv-grip { cursor : grab ; color : var ( - - muted ) ; font-size : 14 px ; padding : 0 2 px ; user-select : none ; }
. sv-grip : active { cursor : grabbing ; }
. sv-ed-sizes { display : flex ; gap : 2 px ; }
. sv-ed-size , . sv-ed-hide { width : 20 px ; height : 20 px ; border : 1 px solid var ( - - border ) ; background : transparent ;
border-radius : 3 px ; font-size : 10 px ; cursor : pointer ; padding : 0 ; line-height : 1 ; }
border-radius : 3 px ; font-size : 11 px ; cursor : pointer ; padding : 0 ; line-height : 1 ; }
. sv-ed-size { color : var ( - - muted ) ; }
. sv-ed-size : hover { color : var ( - - accent ) ; border-color : var ( - - accent - dim ) ; }
. sv-card [ data-size = "s" ] . sv-ed-size [ data-s = "s" ] ,
. sv-card [ data-size = "m" ] . sv-ed-size [ data-s = "m" ] ,
. sv-card [ data-size = "l" ] . sv-ed-size [ data-s = "l" ] { background : var ( - - accent - dim ) ; color : var ( - - text ) ; border-color : var ( - - accent ) ; }
. sv-ed-hide { color : var ( - - bad ) ; font-size : 11 px ; }
. sv-ed-hide { color : var ( - - bad ) ; font-size : 12 px ; }
. sv-ed-hide : hover { background : var ( - - bad ) ; color : var ( - - bg ) ; }
# sv-tray { flex-wrap : wrap ; align-items : center ; gap : 8 px ; margin : 2 px 0 18 px ; padding : 10 px 12 px ;
border : 1 px dashed var ( - - border ) ; border-radius : 8 px ; }
. sv-tray-label { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 10 px ; color : var ( - - muted ) ; }
. sv-tray-label { font-family : var ( - - font - display ) ; text-transform : uppercase ; letter-spacing : .14 em ; font-size : 11 px ; color : var ( - - muted ) ; }
. sv-tray-chip { background : var ( - - panel -2 ) ; border : 1 px solid var ( - - border ) ; color : var ( - - text ) ; border-radius : 14 px ;
padding : 4 px 10 px ; font-family : var ( - - font - ui ) ; font-size : 11 px ; cursor : pointer ; }
padding : 4 px 10 px ; font-family : var ( - - font - ui ) ; font-size : 12 px ; cursor : pointer ; }
. sv-tray-chip : hover { border-color : var ( - - accent ) ; color : var ( - - accent ) ; }