Files

150 lines
8.5 KiB
HTML

<!DOCTYPE html>
<html class="dark h-full" lang="ru">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>{% block title %}ЕГЭ LMS{% endblock %}</title>
<!-- Google Fonts: Space Grotesk, Plus Jakarta Sans, JetBrains Mono -->
<link href="https://fonts.googleapis.com" rel="preconnect"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet"/>
<!-- Tailwind CSS v3 with forms and container-queries -->
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
colors: {
obsidian: {
base: '#141b2b',
deep: '#0c1322',
card: '#191f2f',
border: '#2e3545',
borderLight: '#464554',
},
accent: {
blue: '#494bd6',
blueHover: '#3a3bc0',
blueSubtle: 'rgba(73, 75, 214, 0.12)',
blueBorder: 'rgba(73, 75, 214, 0.35)',
},
status: {
emerald: '#4edea3',
emeraldBg: 'rgba(78, 222, 163, 0.12)',
amber: '#f59e0b',
amberBg: 'rgba(245, 158, 11, 0.12)',
rose: '#ffb4ab',
roseBg: 'rgba(255, 180, 171, 0.12)',
},
txt: {
primary: '#f1f5f9',
secondary: '#cbd5e1',
muted: '#94a3b8',
faint: '#64748b'
}
},
fontFamily: {
sans: ['"Space Grotesk"', 'sans-serif'],
body: ['"Plus Jakarta Sans"', 'sans-serif'],
mono: ['"JetBrains Mono"', 'monospace'],
}
}
}
}
</script>
<style>
body {
background-color: #11131b;
color: #f1f5f9;
font-family: "Plus Jakarta Sans", sans-serif;
}
h1, h2, h3, nav button, .font-heading {
font-family: "Space Grotesk", sans-serif;
}
.font-technical {
font-family: "JetBrains Mono", monospace;
}
/* Исправление для картинок из CKEditor: растягиваем по ширине и сохраняем пропорции */
.prose img {
width: 100% !important;
height: auto !important;
border-radius: 0.5rem;
}
</style>
</head>
<body class="min-h-full flex flex-col antialiased selection:bg-accent-blue selection:text-white bg-obsidian-base text-txt-primary">
<!-- BEGIN: MainHeader -->
<header class="sticky top-0 z-50 w-full border-b border-obsidian-border bg-obsidian-deep/95 backdrop-blur-md" data-purpose="site-navigation-header">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
<!-- Brand Identity Logo & Name -->
<div class="flex items-center space-x-3">
<a href="/" class="flex items-center space-x-3 group">
<div class="w-8 h-8 rounded bg-accent-blue flex items-center justify-center text-white group-hover:bg-accent-blueHover transition-colors">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M12 14l9-5-9-5-9 5 9 5z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
<path d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
</svg>
</div>
<span class="text-lg font-bold tracking-tight text-white flex items-center gap-1.5 font-heading">
ЕГЭ <span class="text-accent-blue font-bold tracking-tight">LMS</span>
</span>
</a>
</div>
<!-- User Navigation & Controls -->
<div class="flex items-center space-x-3 sm:space-x-6">
{% if user.is_authenticated %}
{% if user.is_staff %}
<!-- Admin Panel Link -->
<a class="text-xs sm:text-sm font-medium text-txt-muted hover:text-white transition-colors duration-150 flex items-center gap-1.5 py-1 px-2 rounded hover:bg-obsidian-card font-heading" href="{% url 'admin:index' %}">
<svg class="w-4 h-4 text-txt-muted" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
<path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
</svg>
<span class="hidden sm:inline">Админ-панель</span>
</a>
{% endif %}
<!-- User Profile Pill -->
<div class="flex items-center space-x-2 pl-3 border-l border-obsidian-border" data-purpose="user-greeting">
<div class="w-6 h-6 rounded bg-obsidian-border text-txt-secondary flex items-center justify-center font-bold text-xs font-mono uppercase">
{{ user.first_name.0|default:user.username.0 }}
</div>
<span class="text-xs sm:text-sm text-txt-muted">
Привет, <strong class="text-txt-primary font-semibold font-heading">{{ user.first_name|default:user.username }}</strong>
</span>
</div>
<!-- Logout Action Button -->
<form action="{% url 'lms:logout' %}" method="post" class="inline m-0 p-0 flex">
{% csrf_token %}
<button type="submit" class="text-xs sm:text-sm font-medium text-rose-400 hover:text-rose-300 transition-colors duration-150 flex items-center gap-1 py-1 px-2 rounded hover:bg-rose-950/20 font-heading">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"></path>
</svg>
<span class="hidden sm:inline">Выйти</span>
</button>
</form>
{% else %}
<a href="{% url 'lms:login' %}" class="text-xs sm:text-sm font-medium text-accent-blue hover:text-accent-blueHover transition-colors duration-150 flex items-center gap-1.5 py-1 px-3 rounded bg-accent-blue/10 hover:bg-accent-blue/20 font-heading">
Войти
</a>
{% endif %}
</div>
</div>
</header>
<!-- BEGIN: MainContent -->
<main class="flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-8 sm:py-10">
{% block content %}
{% endblock %}
</main>
<!-- END: MainContent -->
{% load static %}
<script src="{% static 'js/autosave.js' %}"></script>
</body>
</html>