eureka-web/assets/workshop/workshop.css
eureka cc3d6c5ca0 workshop: страница в общей оболочке сайта + компоненты
Мастерская переехала на eureka2: страница /workshop — часть сайта (lib/workshop.js,
общая шапка/навигация/подвал), оформление в tokens сайта (assets/workshop/
workshop.css), компоненты читают данные пода по SSE /workshop/sse.
Компоненты перенесены на сторону сайта, геометрия мозга — assets/workshop/.
build.js собирает страницу (active: workshop).
2026-10-04 01:08:06 +03:00

142 lines
6.4 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* workshop.css — оформление страницы Мастерской.
*
* Опирается на дизайн-токены сайта (assets/style.css): --accent, --muted,
* --surface, --border, --text. Общие для компонентов переменные --workshop-*
* задаются здесь же из токенов сайта, чтобы Web Components (shadow DOM)
* наследовали общую палитру. Никакой своей «второй темы»: страница — часть
* сайта, а не отдельный мир.
*/
:root {
--workshop-accent: var(--accent);
--workshop-dim: var(--muted);
--workshop-text: var(--text);
--workshop-line: var(--border);
--workshop-high: #10151a;
--workshop-eaten: #6fcf97;
--workshop-target: #4a9de0;
}
.ws-hero { padding: 3rem 0 0.5rem; }
.ws-hero .lede { margin-bottom: 0.6rem; }
.ws-source { color: var(--muted); font-size: 0.9rem; }
.ws-source b { color: var(--accent); font-weight: 400; }
#panel-earth.veiled, #panel-brain.veiled { position: relative; }
#panel-earth.veiled::after, #panel-brain.veiled::after {
content: "связи нет…";
position: absolute; inset: 0; z-index: 5;
display: flex; align-items: center; justify-content: center;
background: rgba(120, 12, 12, 0.42);
color: #ffe3e3; font-size: 15px; letter-spacing: .08em;
border-radius: 10px; pointer-events: none;
}
.panel {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 10px;
padding: 1.1rem 1.2rem;
margin-top: 0.6rem;
}
.sensorium { display: flex; gap: 22px; align-items: flex-start; flex-wrap: wrap; }
.seismo { flex: 1; min-width: 260px; }
.stats { color: var(--muted); font-size: 12px; margin-top: 8px; }
.stats b { color: var(--accent); font-weight: 400; }
.note { color: var(--muted); font-size: 13px; margin-top: 12px; line-height: 1.7; }
.note b { color: var(--accent); font-weight: 400; }
.note code { color: var(--accent); }
.off { color: var(--muted); font-size: 13px; margin-top: 10px; }
#nupdated { margin-top: 6px; font-size: 12px; color: var(--muted); }
#nupdated.aging { color: #d8a657; }
#nupdated.stale { color: #ff6b6b; }
details.more { margin-top: 12px; }
details.more > summary {
color: var(--muted); font-size: 12px; cursor: pointer; list-style: none;
letter-spacing: .04em; user-select: none;
}
details.more > summary::-webkit-details-marker { display: none; }
details.more > summary::before { content: "▸ "; color: var(--workshop-target); }
details.more[open] > summary::before { content: "▾ "; }
details.more > summary:hover { color: var(--text); }
details.more > .note { margin-top: 10px; padding-left: 12px; border-left: 2px solid var(--border); }
/* <workshop-target> — куда муха летит прямо сейчас */
workshop-target { display: block; margin-bottom: 12px; }
.wt-line { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.wt-label { color: var(--muted); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; }
.wt-cur {
display: inline-flex; align-items: baseline; gap: 6px;
padding: 4px 12px; font-size: 17px; color: var(--workshop-target);
border: 1px solid var(--workshop-target); border-radius: 16px;
box-shadow: 0 0 0 1px rgba(74, 157, 224, .28);
}
.wt-cur i { color: var(--muted); font-style: normal; font-size: 11px; }
.wt-none { color: var(--muted); font-size: 14px; font-style: italic; }
.wt-idle { color: var(--muted); font-size: 13px; }
.wt-trail { margin-top: 7px; display: flex; flex-wrap: wrap; gap: 5px 6px; opacity: .7; }
.wt-past { padding: 2px 8px; font-size: 11px; color: var(--muted); border: 1px solid var(--border); border-radius: 11px; }
.ww-head, .wm-head { color: var(--muted); font-size: 12px; margin: 14px 0 8px; }
.ww-head b, .wm-head b { color: var(--accent); font-weight: 400; }
/* <workshop-pass> — слова, промелькнувшие мимо */
.wp-head { color: var(--muted); font-size: 12px; margin: 0 0 8px; }
.wp-hint { color: var(--muted); opacity: .75; }
workshop-pass {
display: flex; flex-wrap: wrap; gap: 4px 7px;
min-height: 62px; align-items: flex-start; overflow: hidden; margin-bottom: 4px;
}
.wp-word {
--wp-dim: .3;
padding: 2px 8px; font-size: 13px; border-radius: 12px;
color: var(--workshop-target); background: #0f1a24;
border: 1px solid rgba(74, 157, 224, .35);
white-space: nowrap; opacity: var(--wp-dim);
animation: wp-flash .62s ease-out;
}
@keyframes wp-flash {
0% { opacity: 1; color: #fff; background: rgba(74, 157, 224, .95);
border-color: #cfe7ff; transform: scale(1.18);
box-shadow: 0 0 14px 2px rgba(120, 190, 255, .8); }
45% { transform: scale(1.02); }
100% { color: var(--workshop-target); background: #0f1a24;
border-color: rgba(74, 157, 224, .35); transform: scale(1);
box-shadow: none; opacity: var(--wp-dim); }
}
.wp-empty { color: var(--muted); font-size: 13px; }
/* <workshop-words> — цепочка съеденного, одна строка, кап 20 */
workshop-words {
display: flex; flex-wrap: wrap; gap: 6px 8px;
min-height: 46px; align-items: flex-start; overflow: hidden;
}
.ww-word {
display: inline-flex; align-items: baseline; gap: 5px;
padding: 3px 9px; border: 1px solid var(--border); border-radius: 14px;
color: var(--text); background: #10141a; white-space: nowrap;
}
.ww-word i { color: var(--muted); font-style: normal; font-size: 10px; }
.ww-word.ww-fresh {
border-color: var(--accent); color: var(--accent);
box-shadow: 0 0 0 1px rgba(232, 176, 75, .35);
animation: ww-in .4s cubic-bezier(.22,.61,.36,1);
}
@keyframes ww-in { from { opacity: 0; transform: scale(.82); } to { opacity: 1; transform: scale(1); } }
.ww-word.ww-out { animation: ww-eject .34s ease-in forwards; pointer-events: none; }
@keyframes ww-eject { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(.8) translateY(-6px); } }
.ww-empty { color: var(--muted); font-size: 13px; }
/* <workshop-memory> — рабочая память мухи */
workshop-memory { display: flex; flex-wrap: wrap; gap: 5px 7px; min-height: 30px; align-items: flex-start; }
.wm-word { padding: 2px 8px; font-size: 12px; color: var(--muted); border: 1px dashed var(--border); border-radius: 11px; white-space: nowrap; }
.wm-word.wm-eaten { color: var(--workshop-eaten); border-style: solid; border-color: rgba(111, 207, 151, .5); }
.wm-empty { color: var(--muted); font-size: 13px; }
@media (max-width: 780px) {
.sensorium { gap: 16px; }
}