2026-07-05 19:28:51 +08:00
/* App layout - minimal CSS, most styling via Tailwind */
. app-shell {
display : flex ;
flex-direction : column ;
height : 100 % ;
width : 100 % ;
overflow : hidden ;
2026-07-15 14:32:29 +08:00
background : var ( --surface-app ) ;
box-shadow : inset 0 0 0 1px var ( --border-primary ) ;
2026-07-05 19:28:51 +08:00
}
2026-07-15 14:53:18 +08:00
. hololake-bar { height : 52 px ; flex : 0 0 52 px ; display : flex ; align-items : center ; gap : 12 px ; padding : 0 16 px ; color : var ( - - text - primary ) ; background : var ( - - surface - panel ) ; border-bottom : 1 px solid var ( - - border - default ) ; letter-spacing : .02 em ; }
2026-07-13 23:33:23 +08:00
. hololake-bar__brand , . hololake-bar__library { border : 0 ; background : transparent ; color : inherit ; cursor : pointer ; }
2026-07-15 14:32:29 +08:00
. hololake-bar__brand { display : inline-flex ; align-items : center ; gap : 8 px ; font-size : 14 px ; font-weight : 650 ; letter-spacing : .02 em ; }
. hololake-bar__brand b { color : var ( - - accent - blue ) ; font-weight : 600 ; }
2026-07-15 15:14:42 +08:00
. hololake-bar__mark { display : block ; width : 24 px ; height : 28 px ; object-fit : contain ; object-position : center ; flex : 0 0 24 px ; }
2026-07-15 14:32:29 +08:00
. hololake-bar__line { width : 1 px ; height : 16 px ; background : var ( - - border - default ) ; }
. hololake-bar__context { color : var ( - - text - secondary ) ; font-size : 12 px ; }
. hololake-bar__library { margin-left : auto ; padding : 5 px 9 px ; border : 1 px solid var ( - - border - default ) ; border-radius : 6 px ; color : var ( - - text - secondary ) ; font-size : 12 px ; }
. hololake-bar__library : hover { background : var ( - - state - hover - subtle ) ; color : var ( - - text - primary ) ; }
. hololake-bar__theme { padding : 5 px 9 px ; border : 1 px solid var ( - - border - default ) ; border-radius : 6 px ; background : transparent ; color : var ( - - text - secondary ) ; font-size : 12 px ; cursor : pointer ; }
. hololake-bar__theme : hover { background : var ( - - state - hover - subtle ) ; color : var ( - - text - primary ) ; }
2026-07-15 14:53:18 +08:00
/ * Tauri ' s macOS traffic lights are overlaid on the title bar . Keep the
product mark and title in a separate , stable lane so they never collide . * /
body . mac-chrome . hololake-bar { padding-left : 92 px ; }
. hololake-bar__brand { min-width : max-content ; white-space : nowrap ; }
. hololake-bar__context { white-space : nowrap ; }
2026-07-15 14:32:29 +08:00
. hololake-home { position : relative ; z-index : 2 ; width : 100 % ; overflow : auto ; padding : clamp ( 28 px , 5 vw , 64 px ) ; color : var ( - - text - primary ) ; background : var ( - - surface - app ) ; }
2026-07-13 23:33:23 +08:00
. hololake-home__hero { position : relative ; max-width : 740 px ; padding : 24 px 0 56 px ; overflow : hidden ; }
2026-07-15 14:32:29 +08:00
. hololake-home__halo { position : absolute ; right : -80 px ; top : -140 px ; width : 300 px ; aspect-ratio : 1 ; border : 1 px solid var ( - - border - default ) ; border-radius : 50 % ; opacity : .45 ; }
. hololake-home__eyebrow , . hololake-home__section-head span { color : var ( - - accent - blue ) ; font-size : 12 px ; letter-spacing : .12 em ; text-transform : uppercase ; }
2026-07-13 23:33:23 +08:00
. hololake-home h1 { position : relative ; margin : 18 px 0 0 ; font-family : Georgia , 'Times New Roman' , serif ; font-size : clamp ( 52 px , 7 vw , 92 px ) ; font-weight : 500 ; line-height : .95 ; letter-spacing : -.06 em ; }
. hololake-home h1 em { color : #9cc7ff ; font-style : italic ; font-weight : 400 ; }
. hololake-home__lead { margin : 20 px 0 0 ; font-size : 18 px ; letter-spacing : .16 em ; }
2026-07-15 14:32:29 +08:00
. hololake-home__copy { max-width : 560 px ; margin : 16 px 0 0 ; color : var ( - - text - secondary ) ; font-size : 15 px ; line-height : 1.8 ; }
2026-07-13 23:33:23 +08:00
. hololake-home__actions { display : flex ; align-items : center ; gap : 18 px ; margin-top : 30 px ; }
2026-07-15 14:32:29 +08:00
. hololake-home__primary { padding : 10 px 16 px ; border : 1 px solid var ( - - border - strong ) ; border-radius : 6 px ; background : var ( - - accent - blue ) ; color : var ( - - text - inverse ) ; font-weight : 650 ; cursor : pointer ; }
2026-07-13 23:33:23 +08:00
. hololake-home__primary span , . hololake-module button span { margin-left : 12 px ; }
2026-07-15 14:32:29 +08:00
. hololake-home__status { color : var ( - - text - secondary ) ; font-size : 12 px ; } . hololake-home__status i { display : inline-block ; width : 7 px ; height : 7 px ; margin-right : 7 px ; border-radius : 50 % ; background : var ( - - accent - green ) ; }
2026-07-17 18:50:58 +08:00
. hololake-home__signal-grid { display : grid ; grid-template-columns : repeat ( 3 , minmax ( 0 , 1 fr ) ) ; gap : 12 px ; }
. hololake-home__module-grid { display : grid ; grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr ) ) ; gap : 12 px ; }
2026-07-15 14:32:29 +08:00
. hololake-home__signal-grid article , . hololake-module { border : 1 px solid var ( - - border - default ) ; border-radius : 8 px ; background : var ( - - surface - card ) ; }
. hololake-home__signal-grid article { padding : 18 px ; } . hololake-home__signal-grid span , . hololake-home__signal-grid small { display : block ; color : var ( - - text - secondary ) ; font-size : 11 px ; } . hololake-home__signal-grid strong { display : block ; margin : 10 px 0 6 px ; font-size : 15 px ; }
. hololake-home__modules { margin-top : 44 px ; } . hololake-home__section-head { display : flex ; align-items : end ; justify-content : space-between ; margin-bottom : 14 px ; } . hololake-home__section-head p { margin : 0 ; color : var ( - - text - secondary ) ; font-size : 13 px ; }
. hololake-module { min-height : 185 px ; padding : 20 px ; display : flex ; flex-direction : column ; } . hololake-module__number { color : var ( - - accent - blue ) ; font-family : monospace ; font-size : 12 px ; } . hololake-module h2 { margin : auto 0 8 px ; font-size : 20 px ; font-weight : 600 ; } . hololake-module p { margin : 0 ; color : var ( - - text - secondary ) ; font-size : 13 px ; line-height : 1.7 ; } . hololake-module button { margin-top : 19 px ; padding : 0 ; border : 0 ; color : var ( - - accent - blue ) ; background : transparent ; text-align : left ; font : inherit ; cursor : pointer ; } . hololake-module__soon { margin-top : 19 px ; color : var ( - - text - muted ) ; font-size : 12 px ; }
2026-07-17 18:50:58 +08:00
. guanghu-architecture { max-width : min ( 760 px , calc ( 100 vw - 32 px ) ) ; max-height : min ( 760 px , calc ( 100 vh - 32 px ) ) ; overflow : auto ; background : var ( - - surface - card ) ; color : var ( - - text - primary ) ; }
. guanghu-architecture__routes { display : grid ; gap : 10 px ; margin : 8 px 0 0 ; padding : 0 ; list-style : none ; }
. guanghu-architecture__routes li { display : grid ; grid-template-columns : minmax ( 128 px , auto ) 1 fr ; gap : 16 px ; padding : 14 px ; border : 1 px solid var ( - - border - default ) ; border-radius : 8 px ; background : var ( - - surface - app ) ; }
. guanghu-architecture__routes code { align-self : start ; color : var ( - - accent - blue ) ; font-size : 11 px ; }
. guanghu-architecture__routes strong { font-size : 14 px ; } . guanghu-architecture__routes p { margin : 5 px 0 0 ; color : var ( - - text - secondary ) ; font-size : 12 px ; line-height : 1.65 ; }
. guanghu-architecture__route { overflow-x : auto ; margin : 2 px 0 0 ; padding : 12 px ; border-radius : 6 px ; color : var ( - - text - secondary ) ; background : var ( - - surface - app ) ; font : 11 px / 1.6 monospace ; white-space : nowrap ; }
2026-07-13 23:33:23 +08:00
@ media ( max-width : 780px ) { . hololake-home__signal-grid , . hololake-home__module-grid { grid-template-columns : 1 fr ; } . hololake-bar__context { display : none ; } . hololake-home { padding : 28 px ; } }
2026-07-15 14:53:18 +08:00
@ media ( max-width : 700px ) { body . mac-chrome . hololake-bar { padding-left : 84 px ; } . hololake-bar__line { display : none ; } }
2026-07-13 23:33:23 +08:00
2026-07-05 19:28:51 +08:00
. app {
display : flex ;
flex : 1 ;
min-height : 0 ;
overflow : hidden ;
}
. app__sidebar {
flex : 0 0 auto ;
min-width : 220px ;
display : flex ;
flex-direction : column ;
2026-07-15 14:32:29 +08:00
background : var ( --surface-sidebar ) ;
2026-07-05 19:28:51 +08:00
}
. app__sidebar > * {
flex : 1 ;
}
. app : has ( . app__note-list ) . app__sidebar > * {
border-right-color : transparent ;
}
. app__note-list {
flex : 0 0 auto ;
min-width : 220px ;
display : flex ;
flex-direction : column ;
position : relative ;
z-index : 20 ;
2026-07-15 14:32:29 +08:00
background : var ( --surface-sidebar ) ;
2026-07-05 19:28:51 +08:00
}
. app__note-list > * {
flex : 1 ;
border-left : 1px solid var ( --sidebar-border ) ;
}
. app__editor {
flex : 1 ;
min-width : 480px ;
min-height : 0 ;
overflow : hidden ;
display : flex ;
flex-direction : column ;
container-type : inline-size ;
container-name : editor ;
2026-07-15 14:32:29 +08:00
background : var ( --surface-editor ) ;
2026-07-05 19:28:51 +08:00
}
. app__editor > * {
flex : 1 ;
}
@ keyframes spin {
from { transform : rotate ( 0 deg ) ; }
to { transform : rotate ( 360 deg ) ; }
}
@ keyframes tab-status-pulse {
0 % , 100 % { opacity : 1 ; }
50 % { opacity : 0.3 ; }
}
. tab-status-pulse {
animation : tab-status-pulse 1 . 2s ease-in-out infinite ;
}
/* AI highlight animation — applied by useAiActivity when MCP calls ui_highlight */
@ keyframes ai-highlight-glow {
0 % { box-shadow : inset 0 0 0 2 px color-mix ( in srgb , var ( - - accent - blue ) 80 % , transparent ) ; }
50 % { box-shadow : inset 0 0 8 px 2 px color-mix ( in srgb , var ( - - accent - blue ) 40 % , transparent ) ; }
100 % { box-shadow : inset 0 0 0 2 px color-mix ( in srgb , var ( - - accent - blue ) 0 % , transparent ) ; }
}
. ai-highlight {
animation : ai-highlight-glow 0 . 8s ease-out ;
}