@@ -254,8 +254,8 @@ html[data-theme=light] .lg-art{background:#141a2e}
. modal header button : hover { background : var ( - - surface -2 ) ; color : var ( - - text ) }
. modal > label { margin : 0 ; padding : 18 px 26 px 0 ; font-weight : 800 ; color : var ( - - text ) }
. modal > label : first-of-type { padding-top : 24 px }
. modal input : not ( . pack-cmd-term ) , . modal textarea , . modal > label select { height : 44 px ; margin-top : 10 px ; border-color : rgba ( 145 , 136 , 255 , .26 ) ; background : rgba ( 32 , 40 , 56 , .92 ) ; box-shadow : inset 0 1 px 0 rgba ( 255 , 255 , 255 , .035 ) ; transition : border-color .2 s , box-shadow .2 s , background .2 s }
. modal input : not ( . pack-cmd-term ) : focus , . modal textarea : focus , . modal > label select : focus { border-color : rgba ( 145 , 136 , 255 , .72 ) ; box-shadow : 0 0 0 3 px rgba ( 115 , 103 , 245 , .18 ) , inset 0 1 px 0 rgba ( 255 , 255 , 255 , .05 ) }
. modal input : not ( . pack-cmd-term ) : not ( . dp-input ) , . modal textarea , . modal > label select { height : 44 px ; margin-top : 10 px ; border-color : rgba ( 145 , 136 , 255 , .26 ) ; background : rgba ( 32 , 40 , 56 , .92 ) ; box-shadow : inset 0 1 px 0 rgba ( 255 , 255 , 255 , .035 ) ; transition : border-color .2 s , box-shadow .2 s , background .2 s }
. modal input : not ( . pack-cmd-term ) : not ( . dp-input ) : focus, . modal textarea : focus , . modal > label select : focus { border-color : rgba ( 145 , 136 , 255 , .72 ) ; box-shadow : 0 0 0 3 px rgba ( 115 , 103 , 245 , .18 ) , inset 0 1 px 0 rgba ( 255 , 255 , 255 , .05 ) }
. modal textarea { min-height : 92 px ; height : 92 px }
. modal footer { gap : 12 px ; padding : 22 px 26 px ; align-items : center }
. modal footer . btn { min-width : 88 px ; justify-content : center }
@@ -981,30 +981,31 @@ html[data-theme=light] .calendar-cell.has-art::before{opacity:.82}
html { color-scheme : dark }
html [ data-theme = light ] { color-scheme : light }
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) , . modal textarea , . modal select ,
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) : not ( . dp-input ) , . modal textarea , . modal select ,
. quick-form input , . quick-form select ,
. rule-add input , . rule-add select ,
. form-panel input : not ( [ type = range ] ) : not ( [ type = checkbox ] ) , . form-panel select {
background-color : color-mix ( in srgb , var ( - - surface -2 ) 86 % , transparent ) ;
border : 1 px solid var ( - - border ) ; border-radius : 11 px ; color : var ( - - text ) ;
min-height : 40 px ; padding : 9 px 14 px ; outline : 0 ; font-size : 13.5 px ;
box-shadow : inset 0 1.5 px 3 px rgba ( 0 , 0 , 0 , .16 ) , inset 0 -1 px 0 rgba ( 255 , 255 , 255 , .03 ) ;
background-color : color-mix ( in srgb , var ( - - surface -2 ) 88 % , transparent ) ;
border : 1 px solid color-mix ( in srgb , var ( - - border ) 88 % , var ( - - primary ) ) ;
border-radius : 10 px ; color : var ( - - text ) ;
min-height : 38 px ; height : 38 px ; padding : 0 12 px ; outline : 0 ; font-size : 13 px ; font-weight : 500 ;
box-shadow : inset 0 1 px 0 rgba ( 255 , 255 , 255 , .04 ) ;
transition : border-color .18 s , box-shadow .18 s , background-color .18 s ;
}
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) : hover , . modal textarea : hover , . modal select : hover ,
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) : not ( . dp-input ) : hover, . modal textarea : hover , . modal select : hover ,
. quick-form input : hover , . quick-form select : hover ,
. rule-add input : hover , . rule-add select : hover ,
. form-panel input : not ( [ type = range ] ) : not ( [ type = checkbox ] ) : hover , . form-panel select : hover {
border-color : color-mix ( in srgb , var ( - - primary ) 42 % , var ( - - border ) ) ;
border-color : color-mix ( in srgb , var ( - - primary ) 38 % , var ( - - border ) ) ;
}
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) : focus , . modal textarea : focus , . modal select : focus ,
. modal input : not ( [ type = checkbox ] ) : not ( [ type = radio ] ) : not ( . pack-cmd-term ) : not ( . dp-input ) : focus, . modal textarea : focus , . modal select : focus ,
. quick-form input : focus , . quick-form select : focus ,
. rule-add input : focus , . rule-add select : focus ,
. form-panel input : not ( [ type = range ] ) : not ( [ type = checkbox ] ) : focus , . form-panel select : focus {
border-color : var ( - - primary ) ; background-color : var ( - - surface -2 ) ;
box-shadow : 0 0 0 3.5 px rgba ( 115 , 103 , 245 , .16 ) , inset 0 1.5 px 3 px rgba ( 0 , 0 , 0 , .08 ) ;
box-shadow : 0 0 0 3 px color-mix ( in srgb , var ( - - primary ) 22 % , transparent ) ;
}
. modal textarea { min-height : 96 px ; line-height : 1.55 ; resize : vertical }
. modal textarea { min-height : 96 px ; height : auto ; line-height: 1.55 ; resize : vertical ; padding : 10 px 12 px }
:: placeholder { color : color-mix ( in srgb , var ( - - muted ) 72 % , transparent ) }
/* 所有下拉统一为自绘箭头(去掉系统灰三角,后台感的主要来源之一)。
@@ -1023,16 +1024,29 @@ select::-ms-expand{display:none}
input [ type = range ] { accent-color : var ( - - primary ) }
input [ type = checkbox ] , input [ type = radio ] { accent-color : var ( - - primary ) }
/* 模态框:更大的圆角 、顶部渐变 饰线、无分割线的松弛留白 */
. overlay { background : rgba ( 7 , 10 , 17 , .56 ) ; backdrop-filter : blur ( 10 px ) saturate ( 12 0 % ) ; -webkit- backdrop-filter : blur ( 10 px ) saturate ( 12 0 % ) }
. modal { position : relative ; border-radius : 18 px ; overflow : auto ; box-shadow : 0 42 px 96 px rgba ( 0 , 0 , 0 , .52 ) , inset 0 1 px 0 var ( - - glass - highlight ) }
. modal :: before { content : "" ; position : absolute ; top : 0 ; left : 0 ; right : 0 ; height : 2 px ; background : linear-gradient ( 9 0deg , transparent , rgba ( 139 , 124 , 248 , .85 ) 28 % , rgba ( 83 , 214 , 162 , .6 ) 7 2% , transparent ) ; opacity : .9 ; pointer-events : none }
. modal header { border-bottom : 0 ; padding : 22 px 26 px 4 px ; align-items : center }
. modal header h2 { font-size : 17 px ; letter-spacing : .3px }
. modal header but ton { width : 32 px ; height : 32 px ; border-radius : 10 px ; display : grid ; place-items : center ; font-size : 20 px ; line-height : 1 ; transition : background-color .1 5 s, color .15 s }
/* 模态框:玻璃底 、顶部饰线、入场、页头/页脚细分割 */
. overlay { background : rgba ( 6 , 9 , 16 , .58 ) ; backdrop-filter : blur ( 14 px ) saturate ( 14 0 % ) ; -webkit- backdrop-filter : blur ( 14 px ) saturate ( 14 0 % ) }
. modal { position : relative ; border-radius : 20 px ; overflow : auto ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 80 % , rgba ( 255 , 255 , 255 , .16 ) ) ;
background : linear-gradient ( 18 0deg , color-mix ( in srgb , var ( - - surface ) 9 2% , #fff ) , var ( - - surface ) ) ;
box-shadow : 0 28 px 80 px rgba ( 0 , 0 , 0 , .48 ) , 0 0 0 1 px rgba ( 255 , 255 , 255 , .03 ) , inset 0 1 px 0 rgba ( 255 , 255 , 255 , .06 ) ;
animation : modalIn .22 s cubic-bezier ( .22 , 1 , .36 , 1 ) }
. modal :: before { content : "" ; position : absolute ; top : 0 ; left : 16 px ; right : 16 px ; height : 1 px ; border-radius : 1 px ; background : linear-gradient ( 90 deg , transparent , rgba ( 143 , 132 , 25 0 , .7 ) 22 % , rgba ( 67 , 20 1, 150 , .45 ) 78 % , transparent ) ; opacity : .9 5 ; pointer-event s: none ; z-index : 1 }
. modal header { border-bottom : 1 px solid color-mix ( in srgb , var ( - - border ) 70 % , transparent ) ; padding : 16 px 22 px 14 px ; align-items : center }
. modal header h2 { font-size : 15.5 px ; font-weight : 700 ; letter-spacing : .2 px }
. modal header button { width : 30 px ; height : 30 px ; border-radius : 9 px ; display : grid ; place-items : center ; font-size : 18 px ; line-height : 1 ; color : var ( - - muted ) ; transition : background-color .15 s , color .15 s , transform .15 s }
. modal header button : hover { background : var ( - - surface -3 ) ; color : var ( - - text ) }
. modal > label { font-size : 12 px ; font-weight : 600 ; letter-spacing : .4 px ; col or: var ( - - muted ) ; margin : 16 px 26 px 0 }
. modal footer { border-top : 0 ; padding : 20 px 26 px 24 px ; gap : 10 px }
. modal header button : hover svg { transf orm : rotate ( 90 deg ) }
. modal header button svg { width : 16 px ; height : 16 px ; transition : transform .2 s }
. modal > label { font-size : 11.5 px ; font-weight : 600 ; letter-spacing : .35 px ; color : var ( - - muted ) ; margin : 14 px 22 px 0 }
. modal footer { border-top : 1 px solid color-mix ( in srgb , var ( - - border ) 70 % , transparent ) ; padding : 14 px 22 px 16 px ; gap : 10 px ; background : color-mix ( in srgb , var ( - - surface -2 ) 42 % , transparent ) }
@ keyframes modalIn { from { opacity : 0 ; transform : translateY ( 12 px ) scale ( .975 ) } to { opacity : 1 ; transform : none } }
@ media ( prefers-reduced-motion : reduce ) { . modal { animation : none } }
html [ data-theme = light ] . overlay { background : rgba ( 15 , 23 , 42 , .32 ) }
html [ data-theme = light ] . modal { box-shadow : 0 24 px 64 px rgba ( 15 , 23 , 42 , .16 ) , inset 0 1 px 0 #fff }
html [ data-theme = light ] . split-fields { background : color-mix ( in srgb , var ( - - surface -2 ) 70 % , #fff ) }
html [ data-theme = light ] . split-fields label { background : #fff ; border-color : var ( - - border ) }
html [ data-theme = light ] . dp-panel { background : #fff ; box-shadow : 0 16 px 40 px rgba ( 15 , 23 , 42 , .14 ) }
html [ data-theme = light ] . dq-chip . active { color : #fff }
. form-error { margin : 14 px 26 px 0 ; padding : 9 px 13 px ; border-radius : 10 px ; background : rgba ( 240 , 94 , 104 , .12 ) ; border : 1 px solid rgba ( 240 , 94 , 104 , .32 ) ; color : #ff9aa2 ; font-size : 12.5 px }
/* 按钮:主按钮渐变 + 光泽,悬停轻微上浮 */
@@ -1126,37 +1140,39 @@ input[type=checkbox],input[type=radio]{accent-color:var(--primary)}
@ media ( prefers-reduced-motion : reduce ) { . daily-card , . daily-hero img { animation : none !important } }
/* 待办/工单编辑:左侧字段列 + 右侧整块 Markdown 编辑区 */
. modal-split { width : min ( 96 0 px , calc ( 100 vw - 64 px ) ) ; height : min ( 68 0px , calc ( 100 dvh - 56 px ) ) ; overflow : hidden }
. modal-split { width : min ( 98 0 px , calc ( 100 vw - 64 px ) ) ; height : min ( 70 0px , calc ( 100 dvh - 56 px ) ) ; overflow : hidden }
. modal-split header h2 { display : flex ; align-items : baseline ; gap : 10 px }
. modal-split header h2 . quick-date { color : var ( - - muted ) ; font-size : 12 px ; font-weight : 500 ; letter-spacing : .4 px }
. modal-split . split-body { flex : 1 ; display : flex ; min-height : 0 }
. split-fields { width : 288 px ; flex : none ; display : flex ; flex-direction : column ; overflow-y : auto ; padding : 14 px 2 4px 18 px 2 6px ; border-right : 1 px solid color-mix ( in srgb , var ( - - border ) 72 % , transparent ) }
. split-fields label { display : block ; font-size : 12 px ; font-weight : 600 ; letter-spacing : .4 px ; color : var ( - - muted ) ; margin-top : 14 px }
. split-fields > label : first-child { margin-top : 2 px }
. split-fields input , . split-fields select { width : 100 % }
. split-fields . field-pair { display : grid ; grid-template-columns : 1 fr 1 fr ; gap : 0 12 px }
. split-editor { flex : 1 ; min-width : 0 ; display : flex ; flex-direction : column ; padding : 14 px 26 px 18 px 24 px }
. split-editor . md-toolbar { margin-bot tom : 0 }
. md-field-label { font-size : 12 px ; font-weight : 60 0; letter-spacing : .4 px ; color : var ( - - muted ) ; margin-right : auto }
. split-editor . md-editor { flex : 1 ; min-height : 0 }
. split-editor . md-editor textarea { flex : 1 ; height : auto ; min-height : 0 ; resize : none }
. split-editor . md-preview-box { flex : 1 ; min-height : 0 ; max-height : none }
. split-fields { width : 300 px ; flex : none ; display : flex ; flex-direction : column ; overflow-y : auto ; padding : 12 px 1 4px 16 px 1 6px ; border-right : 1 px solid color-mix ( in srgb , var ( - - border ) 68 % , transparent ) ; background : color-mix ( in srgb , var ( - - surface -2 ) 28 % , transparent ) }
. split-fields label { display : flex ; flex-direction : column ; gap : 7 px ; font-size : 11 px ; font-weight : 600 ; letter-spacing : .45 px ; color : var ( - - muted ) ; margin-top : 8 px ; padding : 9 px 10 px 10 px ; border-radius : 12 px ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 62 % , transparent ) ; background : color-mix ( in srgb , var ( - - surface ) 70 % , transparent ) }
. split-fields > label : first-child { margin-top : 0 }
. split-fields . req { color : #f08a92 ; font-weight : 700 ; margin-left : 1px }
. split-fields input , . split-fields select { width : 100 % ; margin-top : 0 ; height : 36 px ; min-height : 36 px }
. split-fields . field-pair { display : grid ; grid-template-columns : 1 fr 1 fr ; gap : 8 px ; margin-top : 8 px }
. split-fields . field-pair label { margin-top : 0 }
. split-editor { flex : 1 ; min-width : 0 ; display : flex ; flex-direction : column ; padding : 12 px 18 px 16 px 16 px }
. split-editor . md-toolbar { margin-bottom : 0 ; padding : 8 px 10 px ; border-radius : 12 px 12 px 0 0 ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 70 % , transparent ) ; border-bottom : 0 ; background : color-mix ( in srgb , var ( - - surface -2 ) 55 % , transparent ) }
. md-field-label { font-size : 11 px ; font-weight : 600 ; letter-spacing : .45 px ; color : var ( - - muted ) ; margin-right : auto }
. split-editor . md-editor { flex : 1 ; min-height : 0 ; margin-top : 0 ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 70 % , transparent ) ; border-radius : 0 0 12 px 12 px ; overflow : hidden ; background : color-mix ( in srgb , var ( - - surface -2 ) 40 % , transparent ) }
. split-editor . md-editor textarea { flex : 1 ; height : auto ; min-height : 0 ; resize : none ; margin : 0 ; border : 0 ; border-radius : 0 ; box-shadow : none ; background : transparent ; padding : 14 px 16 px }
. split-editor . md-preview-box { flex : 1 ; min-height : 0 ; max-height : none ; padding : 14 px 16 px ; border : 0 ; border-radius : 0 ; box-shadow : none ; background : transparent }
. modal-split footer { align-items : center }
. modal-split footer . form-error { margin : 0 auto 0 0 ; padding : 7 px 12 px }
/* 截止日期快捷标签:今天/明天/N天后, 可增删 */
. due-quick { display : flex ; flex-wrap : wrap ; gap : 6 px ; margin-top : 8 px }
. dq-chip { position : relative ; display : inline-flex ; align-items : center ; gap : 2 px ; height : 24 px ; padding : 0 10 px ; border-radius : 999 px ; border : 1 px solid var ( - - border ) ; background : color-mix ( in srgb , var ( - - surface -2 ) 78 % , transparent ) ; color : var ( - - muted ) ; font-size : 11.5 px ; font-weight : 600 ; cursor : pointer ; transition : border-color .15 s , color .15 s , background .15 s ; user-select : none }
. due-quick { display : flex ; flex-wrap : wrap ; gap : 5 px ; margin-top : 2 px }
. dq-chip { position : relative ; display : inline-flex ; align-items : center ; gap : 2 px ; height : 22 px ; padding : 0 9 px ; border-radius : 999 px ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 80 % , transparent ) ; background : color-mix ( in srgb , var ( - - surface -3 ) 55 % , transparent ) ; color : var ( - - muted ) ; font-size : 11px ; font-weight : 600 ; cursor : pointer ; transition : border-color .15 s , color .15 s , background .15 s ; user-select : none }
. dq-chip : hover : not ( : disabled ) { border-color : color-mix ( in srgb , var ( - - primary ) 45 % , var ( - - border ) ) ; color : var ( - - text ) }
. dq-chip . active { background : rgba ( 115 , 103 , 245 , .16 ) ; border-color : color-mix ( in srgb , var ( - - primary ) 6 2% , var ( - - border ) ) ; color : #a99ffb }
. dq-chip . active { background : linear-gradient ( 140 deg , rgba ( 143 , 131 , 249 , .95 ) , rgba ( 110 , 95 , 242 , .95 ) ) ; border-color : transparent ; color : #fff ; box-shadow : 0 4 px 1 2px rgba ( 101 , 87 , 232 , .28 ) }
. dq-chip : disabled { opacity : .5 ; cursor : not-allowed }
/* 删除角标绝对定位悬浮出现: 不占布局空间, chip 宽度恒定,避免 hover 重排导致点击目标跳动 */
. dq-x { position : absolute ; top : -5 px ; right : -4 px ; z-index : 1 ; display : grid ; place-items : center ; width : 15 px ; height : 15 px ; border-radius : 50 % ; background : var ( - - surface -3 ) ; border : 1 px solid var ( - - border ) ; color : var ( - - muted ) ; opacity : 0 ; transform : scale ( .6 ) ; transition : opacity .15 s , transform .15 s ; cursor : pointer ; pointer-events : none }
. dq-chip : hover . dq-x { opacity : 1 ; transform : scale ( 1 ) ; pointer-events : auto }
. dq-x : hover { color : #fff ; background : var ( - - red ) ; border-color : var ( - - red ) }
. dq-x svg { width : 9 px ; height : 9 px }
. dq-add { width : 26 px ; padding : 0 ; justify-content : center }
. dq-add svg { width : 12 px }
. dq-add { width : 22 px ; height : 22 px ; padding : 0 ; justify-content : center ; border-radius : 999 px }
. dq-add svg { width : 11 px }
. dq-input { padding : 0 9 px ; gap : 4 px ; cursor : default }
. due-quick . dq-input input [ type = number ] { width : 38 px ; height : 20 px ; min-height : 0 ; border : 0 ; outline : 0 ; background : transparent ; color : var ( - - text ) ; font-size : 11.5 px ; padding : 0 ; margin : 0 ; box-shadow : none ; border-radius : 0 ; text-align : center ; -moz- appearance : textfield ; appearance : textfield }
. dq-input input :: -webkit-outer-spin-button , . dq-input input :: -webkit-inner-spin-button { -webkit- appearance : none ; margin : 0 }
@@ -1164,9 +1180,9 @@ input[type=checkbox],input[type=radio]{accent-color:var(--primary)}
/* 编辑器:编辑/预览切换 + 插图按钮 */
. md-editor { display : flex ; flex-direction : column ; gap : 0 ; margin-top : 10 px }
. md-toolbar { display : flex ; align-items : center ; justify-content : space-between ; gap : 10 px ; margin-bottom : 8 px }
. md-toolbar . tabs { margin : 0 ; padding : 3 px ; background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) }
. md-toolbar . tabs button { height : 26 px ; padding : 0 12 px ; font-size : 12 px }
. md-toolbar . btn . md-img-btn { height : 30 px ; padding : 0 12 px ; font-size : 12 px ; border-radius : 9 px ; gap : 6 px }
. md-toolbar . tabs { margin : 0 ; padding : 3 px ; background : color-mix ( in srgb , var ( - - surface -3 ) 70 % , transparent ) ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 70 % , transparent ) ; border-radius : 9 px }
. md-toolbar . tabs button { height : 26 px ; padding : 0 11 px ; font-size : 12 px ; border-radius : 7 px }
. md-toolbar . btn . md-img-btn { height : 28 px ; padding : 0 11 px ; font-size : 12 px ; border-radius : 8 px ; gap : 6 px }
. md-toolbar . btn . md-img-btn svg { width : 14 px }
. md-editor textarea { margin-top : 0 ; min-height : 132 px }
. md-preview-box { min-height : 132 px ; max-height : 320 px ; overflow : auto ; border : 1 px solid var ( - - border ) ; border-radius : 11 px ; padding : 11 px 14 px ; background : color-mix ( in srgb , var ( - - surface -2 ) 60 % , transparent ) ; box-shadow : inset 0 1.5 px 3 px rgba ( 0 , 0 , 0 , .12 ) }
@@ -1335,37 +1351,40 @@ html[data-theme=light] .ph-stats{background:rgba(255,255,255,.5)}
. stats-mini . stats-toggle { margin-left : auto }
/* ============ DatePicker 日期选择器 ============ */
. dp { position : relative ; margin-top : 7 px }
. dp-box { display : flex ; align-items : center ; gap : 8 px ; background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ; border-radius : 7 px ; padding : 0 10 px ; height : 41 px ; cursor : pointer ; transition : border-color .15 s }
. dp-box : focus-within { border-color : var ( - - primary ) }
. dp-ico { width : 16 px ; color : var ( - - muted ) ; flex : none }
. dp . dp-input { flex : 1 ; min-width : 0 ; border : 0 ; background : transparent ; padding : 0 ; margin : 0 ; outline : none ; color : var ( - - text ) ; font : inherit ; font-size : 13 px ; height : 100 % }
. dp-clear { border : 0 ; background : transparent ; color : var ( - - muted ) ; cursor : pointer ; padding : 2 px ; display : grid ; place-items : center ; flex : none }
. dp-clear svg { width : 14 px }
. dp-clear : hover { color : var ( - - red ) }
. dp { position : relative ; margin-top : 0 }
. split-fields . dp , . modal > label . dp { margin-top : 0 }
. dp-box { display : flex ; align-items : center ; gap : 8 px ; background : color-mix ( in srgb , var ( - - surface -2 ) 88 % , transparent ) ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 88 % , var ( - - primary ) ) ; border-radius : 10 px ; padding : 0 10 px ; height : 36 px ; cursor : pointer ; transition : border-color .18 s , box-shadow .18 s , background-color .18 s }
. dp-box : hover { border-color : color-mix ( in srgb , var ( - - primary ) 38 % , var ( - - border ) ) }
. dp-box : focus-within , . dp-box . open { border-color : var ( - - primary ) ; box-shadow : 0 0 0 3 px color-mix ( in srgb , var ( - - primary ) 22 % , transparent ) ; background : var ( - - surface -2 ) }
. dp-ico { width : 15 px ; height : 15 px ; color : color-mix ( in srgb , var ( - - primary ) 70 % , var ( - - muted ) ) ; flex : none }
. dp . dp-input { flex : 1 ; min-width : 0 ; border : 0 !important ; background : transparent !important ; padding : 0 !important ; margin : 0 !important ; outline : none ; color : var ( - - text ) ; font : inherit ; font-size : 13 px ; font-weight : 600 ; font-variant-numeric : tabular-nums ; height : auto !important ; min-height : 0 !important ; box-shadow : none !important }
. dp-clear { border : 0 ; background : transparent ; color : var ( - - muted ) ; cursor : pointer ; padding : 2 px ; display : grid ; place-items : center ; flex : none ; border-radius : 6 px }
. dp-clear svg { width : 13 px }
. dp-clear : hover { color : var ( - - red ) ; background : color-mix ( in srgb , var ( - - red ) 14 % , transparent ) }
. dp . disabled . dp-box { opacity : .55 ; cursor : not-allowed }
. dp-panel { position : absolute ; top : calc ( 100 % + 6 px ) ; left : 0 ; z-index : 7 0; width : 264 px ; padding : 10 px ; border : 1 px solid var ( - - border ) ; border-radius : 10 px ; background : color-mix ( in srgb , var ( - - surface -2 ) 92 % , transparent ) ; box-shadow : 0 18 px 42 px rgba ( 0 , 0 , 0 , .38 ) ; backdrop-filter : blur ( 24 px ) saturate ( 150 % ) ; animation : popoverIn .16 s ease-out }
. dp-head { display : flex ; align-items : center ; justify-content : space-between ; margin-bottom : 8 px }
. dp-nav { width : 28 px ; height : 28 px ; border : 1 px solid var ( - - border ) ; background : var ( - - surface -2 ) ; border-radius : 7 px ; color : var ( - - muted ) ; cursor : pointer ; display : grid ; place-items : center ; transition : color .15 s , border-color .15 s }
. dp-nav : hover { color : var ( - - text ) ; border-color : var ( - - primary ) }
. dp-panel { position : absolute ; top : calc ( 100 % + 8 px ) ; left : 0 ; z-index : 9 0; width : 272 px ; padding : 12 px ; border : 1 px solid color-mix ( in srgb , var ( - - border ) 75 % , rgba ( 255 , 255 , 255 , .12 ) ) ; border-radius : 14 px ; background : color-mix ( in srgb , var ( - - surface ) 88 % , var ( - - surface -2 ) ) ; box-shadow : 0 18 px 48 px rgba ( 0 , 0 , 0 , .42 ) , 0 0 0 1 px rgba ( 255 , 255 , 255 , .04 ) ; backdrop-filter : blur ( 22 px ) saturate ( 150 % ) ; animation : popoverIn .16 s ease-out }
. dp-head { display : flex ; align-items : center ; justify-content : space-between ; margin-bottom : 10 px }
. dp-nav { width : 28 px ; height : 28 px ; border : 1 px solid var ( - - border ) ; background : color-mix ( in srgb , var( - - surface -2 ) 80 % , transparent ) ; border-radius : 8 px ; color : var ( - - muted ) ; cursor : pointer ; display : grid ; place-items : center ; transition : color .15 s , border-color .15 s , background .15 s }
. dp-nav : hover { color : var ( - - text ) ; border-color : var ( - - primary ) ; background : color-mix ( in srgb , var ( - - primary ) 12 % , var ( - - surface -2 ) ) }
. dp-nav svg { width : 15 px }
. dp-ym { display : flex ; gap : 4 px }
. dp-ym button { border : 0 ; background : transparent ; color : var ( - - text ) ; font-weight : 700 ; font-size : 13.5 px ; padding : 4 px 8 px ; border-radius : 6 px ; cursor : pointer }
. dp-ym button : hover , . dp-ym button . on { background : var ( - - surface -3 ) ; color : var ( - - primary ) }
. dp-week { display : grid ; grid-template-columns : repeat ( 7 , 1 fr ) ; text-align : center ; color : var ( - - muted ) ; font-size : 11 px ; margin-bottom : 4 px }
. dp-grid { display : grid ; grid-template-columns : repeat ( 7 , 1 fr ) ; gap : 2 px }
. dp-ym button { border : 0 ; background : transparent ; color : var ( - - text ) ; font-weight : 700 ; font-size : 13px ; padding : 4 px 8 px ; border-radius : 7 px ; cursor : pointer }
. dp-ym button : hover , . dp-ym button . on { background : color-mix ( in srgb , var ( - - primary ) 14 % , var( - - surface -3 ) ) ;color : var ( - - primary ) }
. dp-week { display : grid ; grid-template-columns : repeat ( 7 , 1 fr ) ; text-align : center ; color : var ( - - muted ) ; font-size : 10.5 px ; font-weight : 600 ; letter-spacing : .3 px ; margin-bottom : 6 px }
. dp-grid { display : grid ; grid-template-columns : repeat ( 7 , 1 fr ) ; gap : 3 px }
. dp-grid . months { grid-template-columns : repeat ( 3 , 1 fr ) ; gap : 6 px }
. dp-day { height : 30 px ; border : 0 ; background : transparent ; color : var ( - - text ) ; border-radius : 6 px ; cursor : pointer ; font-size : 12.5 px ; font : inherit }
. dp-day : hover { background : var ( - - surface -3 ) }
. dp-day . dim { color : var ( - - muted ) ; opacity : .45 }
. dp-day . today { box-shadow : inset 0 0 0 1 px var ( - - primary ) }
. dp-day . active { background : var ( - - primary ) ; color : #fff }
. dp-cell { height : 40 px ; border : 1 px solid var ( - - border ) ; background : var ( - - surface -2 ) ; color : var ( - - text ) ; border-radius : 7 px ; cursor : pointer ; font : inherit ; font-size : 12.5 px }
. dp-day { height : 30 px ; border : 0 ; background : transparent ; color : var ( - - text ) ; border-radius : 8 px ; cursor : pointer ; font-size : 12.5 px ; font : inherit ; transition : background .12 s , color .12 s }
. dp-day : hover { background : color-mix ( in srgb , var ( - - primary ) 16 % , var( - - surface -3 ) ) }
. dp-day . dim { color : var ( - - muted ) ; opacity : .4 }
. dp-day . today { box-shadow : inset 0 0 0 1 px color-mix ( in srgb , var ( - - primary ) 70 % , transparent ) ; color : var ( - - primary ) ; font-weight : 700 }
. dp-day . active { background : linear-gradient ( 140 deg , #8f83f9 , #6e5ff2 ) ; color : #fff ; box-shadow : 0 4 px 10 px rgba ( 101 , 87 , 232 , .32 ) ; font-weight : 700 }
. dp-day . active . today { box-shadow : 0 4 px 10 px rgba ( 101 , 87 , 232 , .32 ) }
. dp-cell { height : 38 px ; border : 1 px solid var ( - - border ) ; background : color-mix ( in srgb , var ( - - surface -2 ) 80 % , transparent ) ; color : var ( - - text ) ; border-radius : 9 px ; cursor : pointer ; font : inherit ; font-size : 12.5 px }
. dp-cell : hover { border-color : var ( - - primary ) }
. dp-cell . active { background : var ( - - primary ) ; border-color : var ( - - primary ) ; color : #fff }
. dp-foot { display : flex ; justify-content : space-between ; margin-top : 8 px ; border-top : 1 px solid var ( - - border ) ; padding-top : 8 px }
. dp-foot button { border : 0 ; background : transparent ; color : var ( - - primary ) ; cursor : pointer ; font-size : 12.5 px ; padding : 4 px 6 px ; font : inherit }
. dp-foot button : hover { text-decoration : underli ne}
. dp-cell . active { background : linear-gradient ( 140 deg , #8f83f9 , #6e5ff2 ) ; border-color : transparent ; color : #fff }
. dp-foot { display : flex ; justify-content : space-between ; margin-top : 10 px ; border-top : 1 px solid color-mix ( in srgb , var ( - - border ) 75 % , transparent ) ; padding-top : 8 px }
. dp-foot button { border : 0 ; background : transparent ; color : var ( - - primary ) ; cursor : pointer ; font-size : 12px ; font-weight : 600 ; padding: 4 px 6 px ; font : inherit ; border-radius : 6 px }
. dp-foot button : hover { background : color-mix ( in srgb , var ( - - primary ) 12 % , transparent ) ; text-decoration: no ne}
/* 页头日报导航里的紧凑形态 */
. team-date-nav . dp { margin-top : 0 ; width : 170 px }
. team-date-nav . dp-box { height : 34 px ; border-radius : 9 px }
@@ -1636,17 +1655,11 @@ html[data-theme=light] .lp-log-line{color:#1f2937}
. sub-brand b { overflow : hidden ; text-overflow : ellipsis ; white-space : nowrap }
. sub-title { margin : 12 px 7 px 5 px ; font-size : 10 px ; font-weight : 700 ; letter-spacing : 1.2 px ; color : var ( - - muted ) ; text-transform : uppercase }
. sidebar . sub-nav { display : flex ; flex-direction : column ; gap : 3 px ; margin-top : 2 px }
. sidebar . sub-nav a { height : 38 px ; display : flex ; align-items : center ; gap : 9 px ; padding : 0 10 px ; border-radius : 8 px ; color : var ( - - muted ) ; font-size : 12.8 px }
. sidebar . sub-nav a { height : 38 px ; display : flex ; align-items : center ; gap : 9 px ; padding : 0 10 px ; border-radius : 8 px ; color : var ( - - muted ) ; font-size : 12.8 px ; overflow : hidden }
. sidebar . sub-nav a > span { flex : 1 ; min-width : 0 ; overflow : hidden ; text-overflow : ellipsis ; white-space : nowrap }
. sidebar . sub-nav a svg { width : 16 px ; height : 16 px ; flex : none }
. sidebar . sub-nav a : hover { background : var ( - - surface -3 ) ; color : var ( - - text ) }
. sidebar . sub-nav a . active { background : color-mix ( in srgb , var ( - - primary ) 15 % , transparent ) ; color : #a9a2ff }
. sidebar . sub-nav a . shortcut { border : 1 px dashed color-mix ( in srgb , var ( - - primary ) 28 % , transparent ) }
. nav-unpin { margin-left : 4 px ; display : grid ; place-items : center ; width : 22 px ; height : 22 px ; border : 0 ; border-radius : 6 px ; background : transparent ; color : var ( - - muted ) ; cursor : pointer ; padding : 0 ; flex : none }
. nav-unpin svg { width : 12 px !important ; height : 12 px !important }
. nav-unpin : hover { background : rgba ( 240 , 84 , 84 , .12 ) ; color : var ( - - red ) }
. nav-add-shortcut { display : flex ; align-items : center ; gap : 8 px ; height : 34 px ; margin : 6 px 0 0 ; padding : 0 10 px ; border : 1 px dashed var ( - - border ) ; border-radius : 8 px ; background : transparent ; color : var ( - - muted ) ; font : inherit ; font-size : 12 px ; cursor : pointer ; white-space : nowrap ; flex-shrink : 0 }
. nav-add-shortcut svg { width : 14 px ; height : 14 px ; flex : none }
. nav-add-shortcut : hover { border-color : var ( - - primary ) ; color : var ( - - primary ) ; background : color-mix ( in srgb , var ( - - primary ) 8 % , transparent ) }
. nav-shortcut-modal { width : min ( 420 px , 92 vw ) ; max-height : min ( 560 px , 80 vh ) ; padding : 0 ; overflow : hidden ; display : flex ; flex-direction : column }
. nav-shortcut-modal . modal-head { flex : none }
. nav-shortcut-modal . modal-head h2 { display : flex ; align-items : center ; gap : 8 px ; margin : 0 ; font-size : 15 px }
@@ -1671,8 +1684,9 @@ html[data-theme=light] .lp-log-line{color:#1f2937}
/* 窄屏:只留 rail, 点分类弹浮层二级菜单 */
. rail-flyout { position : fixed ; left : 78 px ; width : 196 px ; padding : 10 px ; border : 1 px solid var ( - - border ) ; border-radius : 12 px ; background : color-mix ( in srgb , var ( - - surface -2 ) 90 % , transparent ) ; box-shadow : 0 18 px 42 px rgba ( 0 , 0 , 0 , .4 ) ; backdrop-filter : blur ( 24 px ) saturate ( 150 % ) ; animation : popoverIn .16 s ease-out ; z-index : 60 ; display : flex ; flex-direction : column ; gap : 3 px }
. fly-title { font-size : 10 px ; font-weight : 700 ; letter-spacing : 1.2 px ; color : var ( - - muted ) ; padding : 2 px 10 px 6 px ; text-transform : uppercase }
. rail-flyout a { height : 36 px ; display : flex ; align-items : center ; gap : 9 px ; padding : 0 10 px ; border-radius : 8 px ; color : var ( - - muted ) ; text-decoration : none ; font-size : 12.8 px }
. rail-flyout a svg { width : 16 px ; height : 16 px }
. rail-flyout a { height : 36 px ; display : flex ; align-items : center ; gap : 9 px ; padding : 0 10 px ; border-radius : 8 px ; color : var ( - - muted ) ; text-decoration : none ; font-size : 12.8 px ; overflow : hidden }
. rail-flyout a > span { flex : 1 ; min-width : 0 ; overflow : hidden ; text-overflow : ellipsis ; white-space : nowrap }
. rail-flyout a svg { width : 16 px ; height : 16 px ; flex : none }
. rail-flyout a : hover { background : var ( - - surface -3 ) ; color : var ( - - text ) }
. rail-flyout a . active { background : color-mix ( in srgb , var ( - - primary ) 15 % , transparent ) ; color : #a9a2ff }
. rail-flyout a . fly-child { padding-left : 35 px }
@@ -2073,6 +2087,10 @@ html,body,#app{height:100%;overflow:hidden}
. tb-item : hover { background : var ( - - surface -3 ) }
. tb-item span { flex : 1 ; min-width : 0 ; overflow : hidden ; text-overflow : ellipsis ; white-space : nowrap }
. tb-item kbd { font : inherit ; font-size : 10.5 px ; color : var ( - - muted ) }
. tb-item-ico { width : 14 px ; height : 14 px ; flex : none ; color : var ( - - muted ) }
. tb-item-badge { flex : none ; min-width : 18 px ; height : 16 px ; padding : 0 5 px ; border-radius : 999 px ; display : inline - grid ; place-items : center ; font-style : normal ; font-size : 10 px ; font-weight : 800 ; color : #fff ; background : linear-gradient ( 135 deg , #f05e68 , #e0447f ) ; font-variant-numeric : tabular-nums ; line-height : 1 }
. tb-menu-btn . notify { position : relative }
. tb-menu-dot { width : 6 px ; height : 6 px ; border-radius : 50 % ; background : #f05e68 ; flex : none ; margin : 0 1 px 6 px 0 ; box-shadow : 0 0 0 2 px color-mix ( in srgb , var ( - - surface -2 ) 80 % , transparent ) }
. tb-check { font-style : normal ; color : #a9a2ff ; font-size : 12 px }
. tb-spacer { flex : 1 ; min-width : 12 px ; height : 100 % }
. tb-controls { display : flex ; align-items : stretch ; height : 100 % ; flex : none ; --wails-draggable : no-drag }