2026-07-05 19:28:51 +08:00
/* App layout - minimal CSS, most styling via Tailwind */
. app-shell {
2026-07-13 23:33:23 +08:00
/ * HoloLake Era visual system : the inherited Tolaria dark palette is warm
charcoal ; override semantic tokens here so every existing panel speaks
the same deep-lake blue language as the world entrance . * /
--surface-app : # 071126 ;
--surface-sidebar : # 0a1730 ;
--surface-panel : # 0d1c38 ;
--surface-card : # 102343 ;
--surface-popover : # 12284c ;
--surface-input : # 0a1730 ;
--surface-button : # 172e55 ;
--surface-dialog : # 0d1d3a ;
--surface-editor : # 09162d ;
--surface-overlay : rgba ( 2 , 7 , 18 , . 68 ) ;
--text-primary : # edf4ff ;
--text-secondary : # b9c9e2 ;
--text-tertiary : # 8ea4c6 ;
--text-muted : # 7188ac ;
--text-heading : # f3f7ff ;
--border-default : # 1d3a67 ;
--border-subtle : # 142b4d ;
--border-strong : # 315588 ;
--border-input : # 274a78 ;
--sidebar-border : # 17365f ;
--state-hover : # 142b4e ;
--state-hover-subtle : # 0e213f ;
--state-selected : # 173d70 ;
--state-selected-strong : # 24538d ;
--state-active : # 1d477e ;
--accent-blue : # 8dbbff ;
--accent-blue-bg : rgba ( 105 , 165 , 255 , . 23 ) ;
--accent-blue-light : rgba ( 105 , 165 , 255 , . 16 ) ;
2026-07-05 19:28:51 +08:00
display : flex ;
flex-direction : column ;
height : 100 % ;
width : 100 % ;
overflow : hidden ;
2026-07-13 22:10:51 +08:00
background :
radial-gradient ( 58rem 35rem at 82 % -16 % , var ( --guanghu-aurora ) , transparent 62 % ) ,
radial-gradient ( 42rem 30rem at -12 % 112 % , var ( --guanghu-glow ) , transparent 65 % ) ,
var ( --surface-app ) ;
box-shadow : inset 0 0 0 1px color-mix ( in srgb , var ( --border-primary ) 82 % , var ( --accent-blue ) ) ;
2026-07-05 19:28:51 +08:00
}
2026-07-13 23:33:23 +08:00
. hololake-bar { height : 52 px ; flex : 0 0 52 px ; display : flex ; align-items : center ; gap : 14 px ; padding : 0 20 px ; color : #eef4ff ; background : linear-gradient ( 100 deg , #08122b , #172d58 52 % , #0b1731 ) ; border-bottom : 1 px solid rgba ( 153 , 189 , 255 , .28 ) ; letter-spacing : .02 em ; }
. hololake-bar__brand , . hololake-bar__library { border : 0 ; background : transparent ; color : inherit ; cursor : pointer ; }
. hololake-bar__brand { display : inline-flex ; align-items : center ; gap : 9 px ; font-size : 16 px ; font-weight : 650 ; letter-spacing : .04 em ; }
. hololake-bar__brand b { color : #9cc3ff ; font-weight : 500 ; }
. hololake-bar__mark { display : grid ; place-items : center ; width : 24 px ; height : 24 px ; color : #dceaff ; border : 1 px solid rgba ( 205 , 225 , 255 , .48 ) ; border-radius : 50 % ; box-shadow : 0 0 22 px rgba ( 96 , 165 , 250 , .65 ) ; }
. hololake-bar__line { width : 1 px ; height : 17 px ; background : rgba ( 196 , 218 , 255 , .35 ) ; }
. hololake-bar__context { color : #b7c8e7 ; font-size : 12 px ; }
. hololake-bar__library { margin-left : auto ; padding : 6 px 10 px ; border : 1 px solid rgba ( 185 , 211 , 255 , .36 ) ; border-radius : 999 px ; color : #dceaff ; font-size : 12 px ; }
. hololake-home { position : relative ; z-index : 2 ; width : 100 % ; overflow : auto ; padding : clamp ( 32 px , 6 vw , 84 px ) ; color : #ecf4ff ; background : radial-gradient ( circle at 75 % 10 % , rgba ( 75 , 135 , 255 , .25 ) , transparent 28 % ) , radial-gradient ( circle at 12 % 92 % , rgba ( 83 , 220 , 255 , .15 ) , transparent 34 % ) , #071126 ; }
. hololake-home__hero { position : relative ; max-width : 740 px ; padding : 24 px 0 56 px ; overflow : hidden ; }
. hololake-home__halo { position : absolute ; right : -110 px ; top : -180 px ; width : 390 px ; aspect-ratio : 1 ; border : 1 px solid rgba ( 166 , 205 , 255 , .28 ) ; border-radius : 50 % ; box-shadow : 0 0 0 45 px rgba ( 103 , 165 , 255 , .05 ) , 0 0 0 105 px rgba ( 103 , 165 , 255 , .035 ) , 0 0 100 px rgba ( 77 , 143 , 255 , .4 ) ; }
. hololake-home__eyebrow , . hololake-home__section-head span { color : #8db5f7 ; font-size : 12 px ; letter-spacing : .16 em ; text-transform : uppercase ; }
. 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 ; }
. hololake-home__copy { max-width : 560 px ; margin : 16 px 0 0 ; color : #b9c8df ; font-size : 15 px ; line-height : 1.9 ; }
. hololake-home__actions { display : flex ; align-items : center ; gap : 18 px ; margin-top : 30 px ; }
. hololake-home__primary { padding : 12 px 18 px ; border : 1 px solid #b9d5ff ; border-radius : 8 px ; background : linear-gradient ( 135 deg , #c8dcff , #6093e8 ) ; color : #061126 ; font-weight : 700 ; cursor : pointer ; }
. hololake-home__primary span , . hololake-module button span { margin-left : 12 px ; }
. hololake-home__status { color : #9eb3d4 ; 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 : #67e8b6 ; box-shadow : 0 0 12 px #67e8b6 ; }
. hololake-home__signal-grid , . hololake-home__module-grid { display : grid ; grid-template-columns : repeat ( 3 , minmax ( 0 , 1 fr ) ) ; gap : 12 px ; }
. hololake-home__signal-grid article , . hololake-module { border : 1 px solid rgba ( 157 , 192 , 244 , .2 ) ; border-radius : 14 px ; background : linear-gradient ( 145 deg , rgba ( 30 , 57 , 105 , .55 ) , rgba ( 12 , 25 , 51 , .78 ) ) ; box-shadow : inset 0 1 px rgba ( 255 , 255 , 255 , .06 ) ; }
. hololake-home__signal-grid article { padding : 18 px ; } . hololake-home__signal-grid span , . hololake-home__signal-grid small { display : block ; color : #91a9ce ; 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 : 52 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 : #91a9ce ; font-size : 13 px ; }
. hololake-module { min-height : 215 px ; padding : 22 px ; display : flex ; flex-direction : column ; } . hololake-module__number { color : #78aaf7 ; font-family : monospace ; font-size : 12 px ; } . hololake-module h2 { margin : auto 0 8 px ; font-size : 22 px ; font-weight : 600 ; } . hololake-module p { margin : 0 ; color : #aebed7 ; font-size : 13 px ; line-height : 1.7 ; } . hololake-module button { margin-top : 19 px ; padding : 0 ; border : 0 ; color : #c8dcff ; background : transparent ; text-align : left ; font : inherit ; cursor : pointer ; } . hololake-module__soon { margin-top : 19 px ; color : #7185a8 ; font-size : 12 px ; }
@ 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-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-13 23:33:23 +08:00
background : linear-gradient ( 180deg , # 10254a , var ( --surface-sidebar ) 40 % , # 08152c ) ;
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-13 23:33:23 +08:00
background : linear-gradient ( 180deg , # 0d2040 , # 091730 48 % , # 08152c ) ;
box-shadow : 14px 0 30px rgba ( 1 , 7 , 20 , . 36 ) ;
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-13 22:10:51 +08:00
position : relative ;
background :
linear-gradient ( var ( --guanghu-grid ) 1px , transparent 1px ) ,
linear-gradient ( 90deg , var ( --guanghu-grid ) 1px , transparent 1px ) ,
color-mix ( in srgb , var ( --surface-editor ) 94 % , var ( --guanghu-glow ) ) ;
background-size : 32px 32px , 32px 32px , auto ;
}
. app__editor :: before {
content : '' ;
position : absolute ;
inset : 0 ;
pointer-events : none ;
background : linear-gradient ( 180deg , color-mix ( in srgb , var ( --surface-editor ) 28 % , transparent ) , transparent 13rem ) ;
z-index : 0 ;
}
. app__editor > * {
position : relative ;
z-index : 1 ;
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 ;
}