@@ -19,17 +19,27 @@ body {
1919}
2020@keyframes gradientShift { 0% { background-position : 0% 50% ; } 50% { background-position : 100% 50% ; } 100% { background-position : 0% 50% ; } }
2121
22+ /* KHUNG CHÍNH: ÉP CỨNG ĐỘ RỘNG, CHỐNG TRÀN PHẢI TUYỆT ĐỐI */
2223.app-container {
2324 background : var (--bg-container ); backdrop-filter : blur (40px ); -webkit-backdrop-filter : blur (40px );
24- border-radius : 40 px ; border : 1px solid rgba (255 , 255 , 255 , 0.6 );
25+ border-radius : 36 px ; border : 1px solid rgba (255 , 255 , 255 , 0.6 );
2526 box-shadow : 0 30px 60px rgba (0 , 0 , 0 , 0.08 );
26- width : min (92 vw , 380 px ); padding : 24 px 20px ; position : relative; transition : box-shadow 0.3s ease;
27+ width : min (90 vw , 360 px ); padding : 20px 14 px ; position : relative; transition : box-shadow 0.3s ease;
2728}
28- .app-grid { display : grid; grid-template-columns : repeat (4 , 1fr ); gap : 24px 12px ; justify-items : center; width : 100% ; }
29+
30+ /* LƯỚI 4 CỘT CHUẨN XÁC CHO MÀN HÌNH CHÍNH */
31+ .app-grid {
32+ display : grid;
33+ grid-template-columns : repeat (4 , 1fr );
34+ gap : 18px 8px ;
35+ justify-items : center;
36+ width : 100% ;
37+ }
38+
2939.app-item { display : flex; flex-direction : column; align-items : center; width : 100% ; position : relative; cursor : pointer; transition : transform 0.15s ; }
3040.app-item : active { transform : scale (0.92 ); }
3141
32- .icon-wrapper { width : 60px ; height : 60px ; position : relative; overflow : hidden; margin-bottom : 8 px ; isolation : isolate; border : none; }
42+ .icon-wrapper { width : 60px ; height : 60px ; position : relative; overflow : hidden; margin-bottom : 6 px ; isolation : isolate; border : none; flex-shrink : 0 ; }
3343.icon-img { position : absolute; top : 0 ; left : 0 ; width : 100% ; height : 100% ; object-fit : cover; z-index : 1 ; }
3444.fallback-text { display : none !important ; }
3545.mark-overlay { position : absolute; top : 0 ; left : 0 ; width : 100% ; height : 100% ; z-index : 3 ; pointer-events : none; mix-blend-mode : overlay; }
@@ -52,12 +62,12 @@ body.hide-labels .app-info { display: none !important; }
5262body .dock-active # settingsBtn { display : none !important ; }
5363
5464/* DOCK */
55- .dock-container { position : fixed; bottom : calc (20px + env (safe-area-inset-bottom, 20px )); left : 50% ; transform : translateX (-50% ); width : 90% ; max-width : 380 px ; display : flex; justify-content : space-around; align-items : center; padding : 12 px 10px ; border-radius : 28px ; z-index : 997 ; transition : box-shadow 0.3s ease; }
65+ .dock-container { position : fixed; bottom : calc (20px + env (safe-area-inset-bottom, 20px )); left : 50% ; transform : translateX (-50% ); width : 90% ; max-width : 360 px ; display : flex; justify-content : space-around; align-items : center; padding : 10px ; border-radius : 28px ; z-index : 997 ; transition : box-shadow 0.3s ease; }
5666.dock-style-glass { background : rgba (255 , 255 , 255 , 0.25 ); backdrop-filter : blur (20px ); border : 1px solid rgba (255 , 255 , 255 , 0.5 ); }
5767.dock-style-wood { background : linear-gradient (to bottom, # a16d3a, # 7c4b21, # a16d3a ); border : 1px solid # 5a3517 ; }
5868.dock-style-blur { background : rgba (0 , 0 , 0 , 0.4 ); backdrop-filter : blur (15px ); border : 1px solid rgba (255 , 255 , 255 , 0.2 ); }
5969
60- /* KHU VỰC DRAWER & SPRING ANIMATION */
70+ /* NGĂN KÉO DRAWER */
6171# drawerWrapper {
6272 position : fixed; z-index : 998 ; align-items : center;
6373 box-shadow : 0 10px 30px rgba (0 , 0 , 0 , 0.15 );
@@ -69,12 +79,10 @@ body.dock-active #settingsBtn { display: none !important; }
6979# drawerContent { display : flex; white-space : nowrap; align-items : center; gap : 8px ; overflow-x : auto; scrollbar-width : none; }
7080# drawerContent ::-webkit-scrollbar { display : none; }
7181
72- /* CẬP NHẬT PADDING TẠO THÀNH KHỐI ÔM SÁT 60px */
7382.drawer-horizontal { background : rgba (255 , 255 , 255 , 0.4 ); backdrop-filter : blur (40px ); border-radius : 50px ; padding : 7px ; border : 1px solid rgba (255 , 255 , 255 , 0.6 ); display : flex; justify-content : flex-end; max-width : calc (100vw - 110px ); }
7483.drawer-vertical { background : rgba (255 , 255 , 255 , 0.7 ) !important ; backdrop-filter : blur (30px ) !important ; border-radius : 32px !important ; padding : 7px !important ; border : 1px solid rgba (255 , 255 , 255 , 0.6 ); display : flex; }
7584.drawer-vertical # drawerClose { display : none !important ; }
7685
77- /* CẬP NHẬT KÍCH THƯỚC ICON CHUẨN 46x46 */
7886.drawer-btn {
7987 width : 46px !important ; height : 46px !important ; border-radius : 50% !important ; border : none;
8088 display : flex; align-items : center; justify-content : center; cursor : pointer; flex-shrink : 0 ;
@@ -86,16 +94,27 @@ body.dock-active #settingsBtn { display: none !important; }
8694
8795.delete-icon { position : absolute; top : 50% ; left : 50% ; transform : translate (-50% , -50% ); width : 34px ; height : 34px ; background : rgba (255 , 59 , 48 , 0.9 ); backdrop-filter : blur (5px ); border-radius : 50% ; display : flex; align-items : center; justify-content : center; font-size : 18px ; color : white; cursor : pointer; z-index : 10 ; box-shadow : 0 4px 12px rgba (255 , 59 , 48 , 0.5 ); border : 2px solid rgba (255 , 255 , 255 , 0.8 ); }
8896
97+ /* MODAL CHUNG */
8998.modal-overlay { position : fixed; inset : 0 ; background : rgba (0 , 0 , 0 , 0.4 ); backdrop-filter : blur (10px ); opacity : 0 ; pointer-events : none; transition : opacity 0.3s ease; z-index : 1000 ; display : flex; align-items : center; justify-content : center; }
9099.modal-overlay .active { opacity : 1 ; pointer-events : auto; }
91- .modal-content { background : var (--color-modal-bg ); backdrop-filter : blur (30px ); width : 88 % ; max-width : 380 px ; max-height : 75 vh ; border-radius : 28px ; padding : 22 px ; box-shadow : 0 12px 40px rgba (0 , 0 , 0 , 0.2 ); overflow-y : auto; transform : scale (0.85 ) translateY (20px ); opacity : 0 ; transition : all 0.4s cubic-bezier (0.175 , 0.885 , 0.32 , 1.275 ); }
100+ .modal-content { background : var (--color-modal-bg ); backdrop-filter : blur (30px ); width : 90 % ; max-width : 360 px ; max-height : 78 vh ; border-radius : 28px ; padding : 18 px 14 px ; box-shadow : 0 12px 40px rgba (0 , 0 , 0 , 0.2 ); overflow-y : auto; transform : scale (0.85 ) translateY (20px ); opacity : 0 ; transition : all 0.4s cubic-bezier (0.175 , 0.885 , 0.32 , 1.275 ); }
92101.modal-overlay .active .modal-content { transform : scale (1 ) translateY (0 ); opacity : 1 ; }
93- .modal-content h3 { font-size : 18px ; text-align : center; margin-bottom : 14 px ; color : # 1c1c1e ; }
102+ .modal-content h3 { font-size : 18px ; text-align : center; margin-bottom : 12 px ; color : # 1c1c1e ; }
94103.modal-content label { color : var (--color-channel-name ); font-weight : 600 ; display : block; margin-bottom : 6px ; font-size : 14px ; }
95104.input-num , select , .search-box { width : 100% ; padding : 12px 14px ; border-radius : 14px ; border : none; background : var (--color-input-bg ); box-shadow : var (--shadow-box ); font-size : 15px ; outline : none; }
96- .close-modal { display : block; width : 100% ; margin-top : 18 px ; padding : 14 px ; background : rgba (255 , 255 , 255 , 0.85 ); border : none; border-radius : 16px ; font-weight : 600 ; font-size : 16 px ; cursor : pointer; text-align : center; transition : all 0.2s ;}
105+ .close-modal { display : block; width : 100% ; margin-top : 14 px ; padding : 12 px ; background : rgba (255 , 255 , 255 , 0.85 ); border : none; border-radius : 16px ; font-weight : 600 ; font-size : 15 px ; cursor : pointer; text-align : center; transition : all 0.2s ;}
97106.close-modal : active { transform : scale (0.96 ); background : rgba (200 , 200 , 200 , 0.5 ); }
98107
108+ /* KHO CHỨA & TÌM KIẾM ONLINE: ÉP ĐÚNG LƯỚI 4 CỘT CÂN ĐỐI */
109+ .modal-list {
110+ display : grid;
111+ grid-template-columns : repeat (4 , 1fr );
112+ gap : 16px 6px ;
113+ max-height : 48vh ;
114+ overflow-y : auto;
115+ padding : 8px 2px ;
116+ }
117+
99118@keyframes wiggle { 0% , 100% { transform : rotate (0deg ); } 25% { transform : rotate (-6deg ) scale (1.05 ); } 75% { transform : rotate (6deg ) scale (1.05 ); } }
100119.wiggle-effect { animation : wiggle 1.5s infinite ease-in-out; }
101120
0 commit comments