Disable UI effects and refresh PROJECT_CONTEXT
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 606 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 420 KiB |
@@ -289,10 +289,8 @@ button {
|
||||
.service-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.tile-icon-box,
|
||||
.tile-icon {
|
||||
.tile-icon-box {
|
||||
width: min(100%, 240px);
|
||||
height: min(100%, 240px);
|
||||
}
|
||||
.brand-logo-fullscreen {
|
||||
width: min(42vw, 260px);
|
||||
@@ -347,14 +345,16 @@ button {
|
||||
background: #edf3f9;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
margin-bottom: 0.8rem;
|
||||
margin: 0 auto 0.8rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.tile-icon {
|
||||
width: min(100%, 336px);
|
||||
height: min(100%, 336px);
|
||||
border-radius: 14px;
|
||||
width: 88%;
|
||||
height: 88%;
|
||||
border-radius: 12px;
|
||||
object-fit: contain;
|
||||
background: #edf3f9;
|
||||
object-position: center;
|
||||
background: transparent;
|
||||
}
|
||||
.tile h3 {
|
||||
margin: 0.1rem 0 0.25rem;
|
||||
@@ -403,3 +403,164 @@ button {
|
||||
margin: 0 auto 0.3rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
|
||||
.dashboard-page {
|
||||
background: transparent;
|
||||
}
|
||||
.dashboard-page .header,
|
||||
.dashboard-page .admin-layout {
|
||||
position: relative;
|
||||
z-index: 5;
|
||||
}
|
||||
.parallax-scene {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
background: linear-gradient(180deg, #83bfe9 0%, #acd8f6 42%, #e5f4ff 100%);
|
||||
}
|
||||
.parallax-layer {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
width: min(2400px, 160vw);
|
||||
max-width: none;
|
||||
transform: translate3d(-50%, -50%, 0);
|
||||
will-change: transform;
|
||||
user-select: none;
|
||||
}
|
||||
.layer-base {
|
||||
z-index: 1;
|
||||
width: max(1680px, 112vw);
|
||||
}
|
||||
.layer-lv {
|
||||
z-index: 2;
|
||||
}
|
||||
.layer-cy {
|
||||
z-index: 3;
|
||||
}
|
||||
.layer-de {
|
||||
z-index: 4;
|
||||
}
|
||||
.dashboard-page .panel,
|
||||
.dashboard-page .tile,
|
||||
.dashboard-page .header {
|
||||
background: rgba(255, 255, 255, 0.55);
|
||||
border: 1px solid rgba(255, 255, 255, 0.45);
|
||||
backdrop-filter: blur(3px);
|
||||
}
|
||||
|
||||
|
||||
.made-by-wrap {
|
||||
position: relative;
|
||||
z-index: 6;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 0.2rem 1rem 1rem;
|
||||
}
|
||||
.made-by {
|
||||
color: rgba(18, 48, 74, 0.9);
|
||||
text-decoration: none;
|
||||
font-family: "Brush Script MT", "Segoe Script", cursive;
|
||||
font-size: clamp(1.35rem, 2.8vw, 2rem);
|
||||
letter-spacing: 0.03em;
|
||||
text-shadow: 0 2px 6px rgba(255,255,255,.45);
|
||||
transition: transform .15s ease, opacity .15s ease;
|
||||
}
|
||||
.made-by:hover {
|
||||
transform: translateY(-1px) scale(1.02);
|
||||
opacity: 0.88;
|
||||
}
|
||||
|
||||
/* Cloud-only dashboard background */
|
||||
.dashboard-page {
|
||||
background: linear-gradient(180deg, #8fc7ef 0%, #b8ddf5 48%, #e6f4fd 100%);
|
||||
}
|
||||
.parallax-scene {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
background: linear-gradient(180deg, #83bfe9 0%, #acd8f6 42%, #e5f4ff 100%);
|
||||
}
|
||||
.cloud-layer {
|
||||
position: absolute;
|
||||
inset: -8% -18%;
|
||||
background-repeat: repeat-x;
|
||||
background-size: 760px 100%;
|
||||
will-change: transform;
|
||||
}
|
||||
.cloud-back {
|
||||
opacity: 0.42;
|
||||
filter: blur(2px);
|
||||
animation: cloudFloat 110s linear infinite;
|
||||
background-image:
|
||||
radial-gradient(ellipse 180px 75px at 11% 22%, rgba(255,255,255,.72) 0 67%, rgba(255,255,255,0) 72%),
|
||||
radial-gradient(ellipse 200px 82px at 33% 30%, rgba(255,255,255,.7) 0 66%, rgba(255,255,255,0) 72%),
|
||||
radial-gradient(ellipse 190px 76px at 61% 20%, rgba(255,255,255,.68) 0 65%, rgba(255,255,255,0) 72%),
|
||||
radial-gradient(ellipse 220px 86px at 86% 27%, rgba(255,255,255,.74) 0 66%, rgba(255,255,255,0) 72%);
|
||||
}
|
||||
.cloud-mid {
|
||||
opacity: 0.56;
|
||||
animation: cloudFloat 80s linear infinite reverse;
|
||||
background-image:
|
||||
radial-gradient(ellipse 190px 80px at 16% 56%, rgba(255,255,255,.78) 0 68%, rgba(255,255,255,0) 74%),
|
||||
radial-gradient(ellipse 220px 88px at 43% 47%, rgba(255,255,255,.74) 0 67%, rgba(255,255,255,0) 74%),
|
||||
radial-gradient(ellipse 200px 80px at 66% 60%, rgba(255,255,255,.8) 0 68%, rgba(255,255,255,0) 74%),
|
||||
radial-gradient(ellipse 230px 90px at 90% 51%, rgba(255,255,255,.76) 0 67%, rgba(255,255,255,0) 74%);
|
||||
}
|
||||
.cloud-front {
|
||||
opacity: 0.66;
|
||||
animation: cloudFloat 52s linear infinite;
|
||||
background-image:
|
||||
radial-gradient(ellipse 240px 100px at 9% 82%, rgba(255,255,255,.92) 0 70%, rgba(255,255,255,0) 76%),
|
||||
radial-gradient(ellipse 260px 108px at 34% 78%, rgba(255,255,255,.9) 0 69%, rgba(255,255,255,0) 76%),
|
||||
radial-gradient(ellipse 250px 105px at 60% 85%, rgba(255,255,255,.92) 0 70%, rgba(255,255,255,0) 76%),
|
||||
radial-gradient(ellipse 270px 112px at 86% 79%, rgba(255,255,255,.9) 0 69%, rgba(255,255,255,0) 76%);
|
||||
}
|
||||
@keyframes cloudFloat {
|
||||
0% { transform: translate3d(-6%, 0, 0); }
|
||||
50% { transform: translate3d(4%, -1.2%, 0); }
|
||||
100% { transform: translate3d(-6%, 0, 0); }
|
||||
}
|
||||
|
||||
/* Effects disabled per request: no parallax, no animated clouds, no hover motion */
|
||||
.parallax-scene,
|
||||
.parallax-layer,
|
||||
.cloud-layer,
|
||||
.cloud-back,
|
||||
.cloud-mid,
|
||||
.cloud-front {
|
||||
display: none !important;
|
||||
animation: none !important;
|
||||
transform: none !important;
|
||||
}
|
||||
.dashboard-page {
|
||||
background: linear-gradient(180deg, #a8d2ee 0%, #d8ecf9 100%) !important;
|
||||
}
|
||||
.dashboard-page .panel,
|
||||
.dashboard-page .tile,
|
||||
.dashboard-page .header {
|
||||
backdrop-filter: none !important;
|
||||
background: rgba(255, 255, 255, 0.9) !important;
|
||||
border: 1px solid rgba(198, 218, 235, 0.9) !important;
|
||||
}
|
||||
.tile,
|
||||
.tile:hover,
|
||||
.made-by,
|
||||
.made-by:hover,
|
||||
.category-chip,
|
||||
.category-chip.active,
|
||||
.btn-link,
|
||||
.btn-link.secondary,
|
||||
button {
|
||||
transition: none !important;
|
||||
transform: none !important;
|
||||
}
|
||||
.tile:hover {
|
||||
box-shadow: 0 8px 22px rgba(0, 0, 0, 0.06) !important;
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Администрирование</title>
|
||||
<link rel="stylesheet" href="/static/style.css" />
|
||||
<link rel="icon" type="image/png" href="/static/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<header class="header">
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>МОНТ - инфрастуктурный полигон</title>
|
||||
<link rel="stylesheet" href="/static/style.css" />
|
||||
<link rel="icon" type="image/png" href="/static/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<body class="dashboard-page">
|
||||
<header class="header">
|
||||
<div style="display:flex; align-items:center; gap:0.6rem;">
|
||||
<img src="/static/logo.png" alt="MONT" class="header-logo" />
|
||||
@@ -63,6 +64,7 @@
|
||||
</div>
|
||||
{% endfor %}
|
||||
</section>
|
||||
<footer class="made-by-wrap"><a class="made-by" href="mailto:rgalyaviev@mont.com">Made by Galyaviev</a></footer>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>МОНТ - инфрастуктурный полигон</title>
|
||||
<link rel="stylesheet" href="/static/style.css" />
|
||||
<link rel="icon" type="image/png" href="/static/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<main class="center-box login-page">
|
||||
<img src="/static/logo.png" alt="MONT" class="brand-logo brand-logo-fullscreen" />
|
||||
<h1 class="login-title">МОНТ - инфрастуктурный полигон</h1>
|
||||
{% if login_error %}<div class="auth-error">{{ login_error }}</div>{% endif}
|
||||
{% if login_error %}<div class="auth-error">{{ login_error }}</div>{% endif %}
|
||||
<form method="post" action="/login" class="panel">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}" />
|
||||
<label>Login</label>
|
||||
|
||||
@@ -199,3 +199,38 @@ git push https://ruslan%40ipcom.su:utOgbZ09ruslan@git.ruslan.xyz/ruslan/Stend_mo
|
||||
1. пересобрать runtime-образы,
|
||||
2. пересоздать `portal-webpool-*`, `portal-universal-*`, `portal-warm-*` контейнеры,
|
||||
3. перезапустить `api`.
|
||||
|
||||
|
||||
## 14) Обновление контекста (2026-04-21, вечер)
|
||||
|
||||
1. Главная страница и 500:
|
||||
- Был зафиксирован Internal Server Error на /.
|
||||
- Причина: синтаксическая ошибка Jinja в app/templates/login.html (поврежденный endif).
|
||||
- Статус: исправлено, API перезапущен, / отвечает 200.
|
||||
|
||||
2. Фон и визуальные эффекты:
|
||||
- Были тесты фонов main.jpg, main_general.jpg, 123.jpg и локального файла 71ba42f1d7d61e4313ad8fd086d3ed7f.jpg.
|
||||
- Текущее состояние по запросу: эффекты отключены.
|
||||
- Отключено: parallax, анимации облаков, hover-движения карточек/ссылок, blur карточек.
|
||||
- Главная панель оставлена со статичным светлым фоном без motion-эффектов.
|
||||
|
||||
3. Файлы, затронутые в этой волне:
|
||||
- app/templates/dashboard.html: удален parallax/cloud слой из разметки.
|
||||
- app/static/style.css: добавлен override-блок для отключения эффектов.
|
||||
- app/templates/login.html: исправлена ошибка шаблона.
|
||||
|
||||
4. Актуальный операционный контур:
|
||||
- Сервер: ruslan@10.17.39.3
|
||||
- Проект: /root/Stend_mont
|
||||
- Контекст: /root/Stend_mont/docs/PROJECT_CONTEXT.md
|
||||
- Применение UI-правок:
|
||||
1) ssh ruslan@10.17.39.3
|
||||
2) sudo -s
|
||||
3) cd /root/Stend_mont
|
||||
4) docker compose up -d --build api
|
||||
|
||||
5. Git публикация:
|
||||
- origin: https://git.ruslan.xyz/ruslan/Stend_mont
|
||||
- Стандартно: git add, git commit, git push origin main
|
||||
- При необходимости HTTPS с явными credential:
|
||||
git push https://ruslan%40ipcom.su:utOgbZ09ruslan@git.ruslan.xyz/ruslan/Stend_mont main
|
||||
|
||||
@@ -29,13 +29,13 @@ cat > /opt/portal/index.html <<HTML
|
||||
<style>
|
||||
html,body,#screen{margin:0;height:100%;background:#111}
|
||||
.nav-panel{
|
||||
position:fixed;left:14px;top:14px;z-index:99;display:flex;gap:8px;
|
||||
background:rgba(12,18,26,.88);border:1px solid rgba(255,255,255,.14);
|
||||
box-shadow:0 8px 22px rgba(0,0,0,.35);padding:8px;border-radius:10px
|
||||
position:fixed;left:16px;top:16px;z-index:99;display:flex;gap:10px;
|
||||
background:linear-gradient(180deg,rgba(15,24,36,.78),rgba(9,14,22,.86));border:1px solid rgba(255,255,255,.22);backdrop-filter: blur(5px);
|
||||
box-shadow:0 10px 28px rgba(0,0,0,.36);padding:9px 10px;border-radius:14px
|
||||
}
|
||||
.nav-btn{
|
||||
border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:8px 12px;cursor:pointer;
|
||||
background:linear-gradient(180deg,#1a73b3,#0f5b94);color:#fff;font:600 13px/1 sans-serif
|
||||
border:1px solid rgba(255,255,255,.26);border-radius:999px;padding:9px 14px;cursor:pointer;letter-spacing:.01em;
|
||||
background:linear-gradient(180deg,#2a8cd6,#1668a6);color:#fff;font:700 13px/1 sans-serif;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 5px 12px rgba(10,46,78,.45)
|
||||
}
|
||||
.nav-btn:hover{filter:brightness(1.08)}
|
||||
.nav-btn:active{transform:translateY(1px)}
|
||||
|
||||
@@ -39,13 +39,13 @@ cat > /opt/portal/index.html <<'HTML'
|
||||
}
|
||||
.status.hidden{display:none}
|
||||
.nav-panel{
|
||||
position:fixed;right:14px;top:14px;z-index:99;display:flex;gap:8px;
|
||||
background:rgba(12,18,26,.88);border:1px solid rgba(255,255,255,.14);
|
||||
box-shadow:0 8px 22px rgba(0,0,0,.35);padding:8px;border-radius:10px
|
||||
position:fixed;left:16px;top:16px;z-index:99;display:flex;gap:10px;
|
||||
background:linear-gradient(180deg,rgba(15,24,36,.78),rgba(9,14,22,.86));border:1px solid rgba(255,255,255,.22);backdrop-filter: blur(5px);
|
||||
box-shadow:0 10px 28px rgba(0,0,0,.36);padding:9px 10px;border-radius:14px
|
||||
}
|
||||
.nav-btn{
|
||||
border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:8px 12px;cursor:pointer;
|
||||
background:linear-gradient(180deg,#1a73b3,#0f5b94);color:#fff;font:600 13px/1 sans-serif
|
||||
border:1px solid rgba(255,255,255,.26);border-radius:999px;padding:9px 14px;cursor:pointer;letter-spacing:.01em;
|
||||
background:linear-gradient(180deg,#2a8cd6,#1668a6);color:#fff;font:700 13px/1 sans-serif;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 5px 12px rgba(10,46,78,.45)
|
||||
}
|
||||
.nav-btn:hover{filter:brightness(1.08)}
|
||||
.nav-btn:active{transform:translateY(1px)}
|
||||
|
||||