/
docNemo
/
tactic-hack-ui
Обзор
Документация
Войти
/
docNemo
/
tactic-hack-ui
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/styles.css
238 строк
3 KB
neo
Implement web client: queue, placement, battle with dashed-line deduction, result, reconnect
19 июл 2026, 00:13
19 июл 2026, 00:13
aba0849
Код
Авторство
О чём код?
* { box-sizing: border-box; } body { margin: 0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background: #10141c; color: #e6e9ef; } .app { min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: 16px; } .screen { width: 100%; max-width: 960px; } .screen-center { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 70vh; text-align: center; gap: 12px; } .rules-hint { max-width: 560px; color: #9aa4b5; line-height: 1.5; } .topbar { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; } .boards { display: flex; flex-wrap: wrap; gap: 32px; justify-content: center; margin-top: 8px; } .board-block h3 { margin: 0 0 8px; font-weight: 500; color: #9aa4b5; } .board { background: #1a2130; border-radius: 6px; max-width: 100%; height: auto; } .cell { fill: transparent; } .cell-blocked { fill: rgba(255, 255, 255, 0.06); } .grid { stroke: #2c3648; stroke-width: 1; } .line-solid { stroke: #4f83e3; stroke-width: 2; opacity: 0.75; } .line-revealed { stroke: #e3a14f; } .line-dashed { stroke: #6fc37a; stroke-width: 1.5; stroke-dasharray: 6 5; opacity: 0.8; } .ship { fill: #4f83e3; stroke: #a8c4f2; stroke-width: 1.5; } .ship-destroyed { fill: #b8503c; stroke: #e0907f; } .ship-cross, .digit { fill: #f2f4f8; font-size: 17px; text-anchor: middle; dominant-baseline: central; pointer-events: none; user-select: none; } .hit { fill: transparent; } .hit-clickable { cursor: pointer; } .hit-clickable:hover { fill: rgba(111, 195, 122, 0.18); } .btn { border: 0; border-radius: 8px; padding: 10px 22px; font-size: 15px; cursor: pointer; color: #fff; } .btn:disabled { opacity: 0.45; cursor: default; } .btn-primary { background: #3d6fd4; } .btn-secondary { background: #3a4459; } .btn-danger { background: #8c3b3b; } .actions { display: flex; gap: 12px; margin-top: 16px; justify-content: center; } .hint { color: #9aa4b5; } .waiting { color: #9aa4b5; animation: pulse 1.4s ease-in-out infinite; } @keyframes pulse { 50% { opacity: 0.45; } } .banner { background: #4a3d1f; color: #f2d488; border-radius: 8px; padding: 10px 16px; margin: 8px 0; text-align: center; } .banner-top { position: fixed; top: 8px; left: 50%; transform: translateX(-50%); z-index: 10; } .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: #59293066; backdrop-filter: blur(6px); border: 1px solid #a04a4a; color: #f2b8b8; padding: 10px 18px; border-radius: 8px; z-index: 10; } .turn { color: #9aa4b5; } .turn-mine { color: #6fc37a; } .countdown { font-variant-numeric: tabular-nums; color: #c8d0dd; } .countdown-low { color: #e3745f; } .result-win { color: #6fc37a; } .result-loss { color: #e3745f; } .error-text { color: #e3745f; }