PageSourceSearch

https://exetaseis.netlify.app/

html exetaseis.netlify.app collected 2026-10-03 10:42:55 UTC 32,355 bytes, 622 lines download raw bytes

1<!DOCTYPE html>
2<html lang="el">
3<head>
4  <meta charset="UTF-8" />
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=d1068a49-e3c8-46f3-9f72-9a5d45d3d387
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
8  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9  <title>Ρολόι Εξετάσεων | Χρονόμετρο &amp; Αντίστροφη Μέτρηση για Εξετάσεις</title>
10  <meta name="description" content="Δωρεάν ρολόι εξετάσεων για Γυμνάσιο, ΓΕΛ &amp; ΕΠΑΛ. Χρονόμετρο με αντίστροφη μέτρηση, ειδοποιήσεις 30'/15', αναλογική &amp; ψηφιακή προβολή. Ιδανικό για αίθουσα εξετάσεων." />
11  <meta name="keywords" content="ρολόι εξετάσεων, χρονόμετρο εξετάσεων, χρόνος εξετάσεων, αντίστροφη μέτρηση εξετάσεων, εξετάσεις, exam timer, exams timer, Γυμνάσιο, ΓΕΛ, ΕΠΑΛ, αίθουσα εξετάσεων" />
12  <meta name="theme-color" content="#f8fafc" />
13  <link rel="canonical" href="https://exetaseis.netlify.app/" />
14  <link rel="manifest" href="/manifest.json" />
15
16  <!-- Open Graph / Facebook -->
17  <meta property="og:url" content="https://exetaseis.netlify.app/" />
18  <meta property="og:type" content="website" />
19  <meta property="og:site_name" content="Ρολόι Εξετάσεων" />
20  <meta property="og:locale" content="el_GR" />
21  <meta property="og:title" content="Ρολόι Εξετάσεων | Χρονόμετρο & Αντίστροφη Μέτρηση" />
22  <meta property="og:description" content="Δωρεάν ρολόι εξετάσεων για Γυμνάσιο, ΓΕΛ & ΕΠΑΛ. Χρονόμετρο με αντίστροφη μέτρηση, ειδοποιήσεις 30'/15', αναλογική & ψηφιακή προβολή." />
23  <meta property="og:image" content="https://exetaseis.netlify.app/og-image.png" />
24  <meta property="og:image:secure_url" content="https://exetaseis.netlify.app/og-image.png" />
25  <meta property="og:image:type" content="image/png" />
26  <meta property="og:image:width" content="1706" />
27  <meta property="og:image:height" content="911" />
28  <meta property="og:image:alt" content="Προεπισκόπηση της εφαρμογής Ρολόι Εξετάσεων" />
29
30  <!-- Twitter -->
31  <meta name="twitter:card" content="summary_large_image" />
32  <meta name="twitter:domain" content="exetaseis.netlify.app" />
33  <meta name="twitter:url" content="https://exetaseis.netlify.app/" />
34  <meta name="twitter:title" content="Ρολόι Εξετάσεων | Χρονόμετρο & Αντίστροφη Μέτρηση" />
35  <meta name="twitter:description" content="Δωρεάν ρολόι εξετάσεων για Γυμνάσιο, ΓΕΛ & ΕΠΑΛ. Χρονόμετρο με αντίστροφη μέτρηση, ειδοποιήσεις 30'/15', αναλογική & ψηφιακή προβολή." />
36  <meta name="twitter:image" content="https://exetaseis.netlify.app/og-image.png" />
37  <meta name="twitter:image:alt" content="Προεπισκόπηση της εφαρμογής Ρολόι Εξετάσεων" />
38
39  <link rel="icon" type="image/svg+xml" href="favicon.svg" />
40  <link rel="stylesheet" href="styles.css" />
41
42  
42<script type="application/ld+json">
43  {
44    "@context": "https://schema.org",
45    "@type": "WebApplication",
46    "name": "Ρολόι Εξετάσεων",
47    "url": "https://exetaseis.netlify.app/",
48    "description": "Δωρεάν ρολόι εξετάσεων για Γυμνάσιο, ΓΕΛ & ΕΠΑΛ. Χρονόμετρο με αντίστροφη μέτρηση, ειδοποιήσεις 30'/15', αναλογική & ψηφιακή προβολή. Ιδανικό για αίθουσα εξετάσεων.",
49    "applicationCategory": "EducationalApplication",
50    "operatingSystem": "Any",
51    "offers": {
52      "@type": "Offer",
53      "price": "0",
54      "priceCurrency": "EUR"
55    },
56    "inLanguage": "el-GR",
57    "keywords": "ρολόι εξετάσεων, χρονόμετρο εξετάσεων, χρόνος εξετάσεων, αντίστροφη μέτρηση εξετάσεων, exam timer, exams timer, Γυμνάσιο, ΓΕΛ, ΕΠΑΛ"
58  }
59  </script>
59
60</head>
61<body data-theme="light">
62
63  <!-- ============================================================
64       ΕΠΑΝΩ ΜΠΑΡΑ ΕΛΕΓΧΟΥ
65  ============================================================ -->
66  <header class="top-bar" id="topBar">
67    <div class="settings-group">
68
69      <div class="time-field">
70        <label class="field-label">ΜΑΘΗΜΑ</label>
71        <input type="text" id="examSubject" class="text-input" placeholder="π.χ. Μαθηματικά" />
72      </div>
73
74      <div class="field-divider"></div>
75
76      <div class="time-field">
77        <label class="field-label">ΕΙΣΗΓΗΤΗΣ/ΡΙΑ</label>
78        <input type="text" id="examInstructor" class="text-input" placeholder="π.χ. Παπαδόπουλος" />
79      </div>
80
81      <div class="field-divider"></div>
82
83      <div class="time-field">
84        <label class="field-label">ΕΠΙΤΗΡΗΤΕΣ/ΡΙΕΣ</label>
85        <input type="text" id="examSupervisor" class="text-input" placeholder="π.χ. Νικολάου" />
86      </div>
87
88      <div class="field-divider"></div>
89
90      <div class="time-field">
91        <label class="field-label">ΕΝΑΡΞΗ</label>
92        <input type="time" id="startTime" class="time-input" value="10:00" />
93      </div>
94
95      <div class="field-divider"></div>
96
97      <div class="time-field">
98        <label class="field-label">ΑΠΟΧΩΡΗΣΗ</label>
99        <input type="time" id="departureTime" class="time-input" value="11:00" />
100      </div>
101
102      <div class="field-divider"></div>
103
104      <div class="time-field">
105        <label class="field-label">ΛΗΞΗ</label>
106        <input type="time" id="endTime" class="time-input" value="12:00" />
107      </div>
108
109    </div>
110
111    <div class="controls-group">
112
113      <!-- Κουμπί Εναρξη τώρα -->
114      <button class="ctrl-btn start-now-btn" id="startNowBtn" title="Ορισμός έναρξης στην τρέχουσα ώρα">
115        <span class="btn-full-text">Ώρα έναρξης: τώρα</span>
116        <span class="btn-short-text">Τώρα</span>
117      </button>
118
119      <!-- Κουμπί Γρήγορης Ρύθμισης -->
120      <button class="ctrl-btn quick-setup-btn" id="quickSetupBtn" title="Γρήγορη ρύθμιση αποχώρησης & λήξης">
121        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24"
122             fill="none" stroke="currentColor" stroke-width="2"
123             stroke-linecap="round" stroke-linejoin="round">
124          <line x1="4" y1="21" x2="4" y2="14"></line>
125          <line x1="4" y1="10" x2="4" y2="3"></line>
126          <line x1="12" y1="21" x2="12" y2="12"></line>
127          <line x1="12" y1="8" x2="12" y2="3"></line>
128          <line x1="20" y1="21" x2="20" y2="16"></line>
129          <line x1="20" y1="12" x2="20" y2="3"></line>
130          <line x1="1" y1="14" x2="7" y2="14"></line>
131          <line x1="9" y1="8" x2="15" y2="8"></line>
132          <line x1="17" y1="16" x2="23" y2="16"></line>
133        </svg>
134        <span class="ctrl-label">Γρήγορη Ρύθμιση</span>
135      </button>
136
137      <div class="field-divider"></div>
138
139      <!-- Zoom Site -->
140      <div class="zoom-ctrl-group" title="Zoom σελίδας">
141        <span class="zoom-title">Zoom</span>
142        <button class="zoom-step-btn" id="zoomOutBtn" aria-label="Σμίκρυνση">−</button>
143        <span class="zoom-pct-label" id="zoomPctLabel">100%</span>
144        <button class="zoom-step-btn" id="zoomInBtn" aria-label="Μεγέθυνση">+</button>
145      </div>
146
147      <!-- Κουμπί Ρυθμίσεων -->
148      <button class="ctrl-btn" id="menuBtn" title="Ρυθμίσεις">
149        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"
150             fill="none" stroke="currentColor" stroke-width="2"
151             stroke-linecap="round" stroke-linejoin="round">
152          <circle cx="12" cy="12" r="3"></circle>
153          <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path>
154        </svg>
155        <span class="ctrl-label">Ρυθμίσεις</span>
156      </button>
157
158      <!-- Κουμπί Πλήρους Οθόνης -->
159      <button class="ctrl-btn" id="fullscreenBtn" title="Πλήρης Οθόνη">
160        <svg id="fsIcon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"
161             fill="none" stroke="currentColor" stroke-width="2"
162             stroke-linecap="round" stroke-linejoin="round">
163          <polyline points="15 3 21 3 21 9"></polyline>
164          <polyline points="9 21 3 21 3 15"></polyline>
165          <line x1="21" y1="3" x2="14" y2="10"></line>
166          <line x1="3" y1="21" x2="10" y2="14"></line>
167        </svg>
168        <span class="ctrl-label">Πλήρης Οθόνη</span>
169      </button>
170
171      <!-- Κουμπί Εναλλαγής Θέματος -->
172      <button class="ctrl-btn theme-btn" id="themeBtn" title="Εναλλαγή Θέματος">
173        <span class="theme-icon" id="themeIcon">🌙</span>
174      </button>
175    </div>
176  </header>
177
178  <!-- Μπάνερ Παύσης -->
179  <div class="pause-banner hidden" id="pauseBanner">
180    ⏸ ΠΑΥΣΗ — Η αντίστροφη μέτρηση έχει παυθεί
181  </div>
182
183  <!-- ============================================================
184       ΚΥΡΙΑ ΠΕΡΙΟΧΗ ΕΦΑΡΜΟΓΗΣ
185  ============================================================ -->
186  <main class="app-main">
187
188    <h1 class="seo-h1">Ρολόι Εξετάσεων</h1>
189
190    <section class="clock-section">
191
192      <div class="exam-info" id="examInfo"></div>
193
194      <div class="clock-layout">
195
196        <!-- Αριστερό panel: Εισηγητές & Επιτηρητές/ριες -->
197        <div class="exam-side-panel" id="examSidePanel">
198          <div class="side-panel-group hidden" id="sidePanelInstructorGroup">
199            <div class="side-panel-title">Εισηγητές:</div>
200            <div class="side-panel-names" id="sidePanelInstructor"></div>
201          </div>
202          <div class="side-panel-divider hidden" id="sidePanelDivider"></div>
203          <div class="side-panel-group hidden" id="sidePanelSupervisorGroup">
204            <div class="side-panel-title">Επιτηρητές/ριες:</div>
205            <div class="side-panel-names" id="sidePanelSupervisor"></div>
206          </div>
207        </div>
208
209        <!-- Κέντρο: tabs + ρολόι -->
210        <div class="clock-center">
211
212          <div class="clock-header">
213            <div class="clock-header-spacer"></div>
214            <div class="view-tabs" role="tablist">
215              <button class="tab-btn active" data-view="analog" role="tab" aria-selected="true">Αναλογικό</button>
216              <button class="tab-btn" data-view="digital" role="tab" aria-selected="false">Ψηφιακό</button>
217              <button class="tab-btn" data-view="countdown" role="tab" aria-selected="false">Αντίστροφη Μέτρηση</button>
218            </div>
219            <div id="clockDateOverlay" class="clock-date-overlay"></div>
220          </div>
221
222          <!-- Αναλογικό -->
223          <div class="clock-view" id="analogView">
224            <div class="analog-clock-container">
225              <svg class="analog-clock" id="analogClock" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
226                <circle cx="150" cy="150" r="145" class="clock-rim" />
227                <circle cx="150" cy="150" r="140" class="clock-face" />
228                <g id="minuteMarks"></g>
229                <g id="hourMarks"></g>
230                <g id="clockNumbers"></g>
231                <line id="hourHand"   x1="150" y1="150" x2="150" y2="75"  class="hand hour-hand"   stroke-linecap="round" />
232                <line id="minuteHand" x1="150" y1="150" x2="150" y2="45"  class="hand minute-hand" stroke-linecap="round" />
233                <line id="secondHand" x1="150" y1="165" x2="150" y2="30"  class="hand second-hand" stroke-linecap="round" />
234                <circle cx="150" cy="150" r="6" class="center-dot" />
235                <circle cx="150" cy="150" r="3" class="center-dot-inner" />
236              </svg>
237            </div>
238          </div>
239
240          <!-- Ψηφιακό -->
241          <div class="clock-view hidden" id="digitalView">
242            <div class="digital-clock-container">
243              <div class="digital-time" id="digitalTime">
244                <span id="digitalHM">00:00</span><span id="digitalSec" class="digital-seconds">:00</span>
245              </div>
246              <div class="digital-date" id="digitalDate"></div>
247              <label class="toggle-label">
248                <input type="checkbox" id="digitalSecondsToggle" checked />
249                <span class="toggle-track"><span class="toggle-thumb"></span></span>
250                <span class="toggle-text">Εμφάνιση δευτερολέπτων</span>
251              </label>
252            </div>
253          </div>
254
255          <!-- Αντίστροφη Μέτρηση -->
256          <div class="clock-view hidden" id="countdownView">
257            <div class="countdown-container">
258              <div class="countdown-label" id="countdownLabel">ΜΕΧΡΙ ΤΗ ΛΗΞΗ</div>
259              <div class="countdown-time" id="countdownTime">
260                <span id="countdownHM">00:00</span><span id="countdownSec" class="countdown-seconds">:00</span>
261              </div>
262              <div class="countdown-progress-wrap">
263                <div class="countdown-progress-bar" id="countdownBar"></div>
264              </div>
265              <label class="toggle-label">
266                <input type="checkbox" id="countdownSecondsToggle" checked />
267                <span class="toggle-track"><span class="toggle-thumb"></span></span>
268                <span class="toggle-text">Εμφάνιση δευτερολέπτων</span>
269              </label>
270            </div>
271          </div>
272
273        </div><!-- /clock-center -->
274
275      </div><!-- /clock-layout -->
276
277    </section>
278
279    <!-- Κάρτες KPI -->
280    <aside class="kpi-section">
281
282      <div class="kpi-card" id="kpiStart">
283        <div class="kpi-title">ΕΝΑΡΞΗ</div>
284        <div class="kpi-time" id="kpiStartTime">--:--</div>
285        <div class="kpi-status" id="kpiStartStatus">—</div>
286      </div>
287
288      <div class="kpi-card" id="kpiDepart">
289        <div class="kpi-title">ΔΥΝΑΤΗ ΑΠΟΧΩΡΗΣΗ</div>
290        <div class="kpi-time" id="kpiDepartTime">--:--</div>
291        <div class="kpi-status" id="kpiDepartStatus">—</div>
292        <div class="kpi-depart-countdown" id="kpiDepartCountdown"></div>
293      </div>
294
295      <div class="kpi-card" id="kpiEnd">
296        <div class="kpi-title">ΛΗΞΗ</div>
297        <div class="kpi-time" id="kpiEndTime">--:--</div>
298        <div class="kpi-status" id="kpiEndStatus">—</div>
299      </div>
300
301    </aside>
302
303  </main>
304
305  <!-- Ένδειξη πηγής ώρας -->
306  <div class="time-source" id="timeSource">Ανάκτηση ώρας…</div>
307
308  <!-- ============================================================
309       MENU DRAWER
310  ============================================================ -->
311  <div class="menu-backdrop" id="menuBackdrop"></div>
312
313  <aside class="menu-drawer" id="menuDrawer" role="dialog"
314         aria-label="Ρυθμίσεις" aria-modal="true">
315
316    <div class="menu-header">
317      <h2 class="menu-title">Ρυθμίσεις</h2>
318      <button class="menu-close-btn" id="menuCloseBtn" aria-label="Κλείσιμο">✕</button>
319    </div>
320
321    <div class="menu-body">
322
323      <!-- 1. Παράταση Χρόνου -->
324      <section class="menu-section">
325        <h3 class="menu-section-title">Παράταση Χρόνου</h3>
326        <div class="time-ext-btns">
327          <button class="ext-btn" data-mins="1">+1 λεπτό</button>
328          <button class="ext-btn" data-mins="5">+5 λεπτά</button>
329          <button class="ext-btn" data-mins="15">+15 λεπτά</button>
330        </div>
331      </section>
332
333      <div class="menu-divider"></div>
334
335      <!-- 2. Ειδοποιήσεις -->
336      <section class="menu-section">
337        <h3 class="menu-section-title">Ειδοποιήσεις</h3>
338
339        <div class="notif-group">
340          <label class="notif-master">
341            <input type="checkbox" id="notif30Master" />
342            <span class="toggle-track"><span class="toggle-thumb"></span></span>
343            <span class="notif-label">Ειδοποίηση στα 30'</span>
344          </label>
345          <div class="notif-sub disabled" id="notif30Sub">
346            <label class="sub-check"><input type="checkbox" id="notif30Sound" checked /> Ήχος</label>
347            <label class="sub-check"><input type="checkbox" id="notif30Flash" checked /> Φλας οθόνης</label>
348            <label class="sub-check"><input type="checkbox" id="notif30Color" checked /> Χρωματική αλλαγή</label>
349          </div>
350        </div>
351
352        <div class="notif-group">
353          <label class="notif-master">
354            <input type="checkbox" id="notif15Master" />
355            <span class="toggle-track"><span class="toggle-thumb"></span></span>
356            <span class="notif-label">Ειδοποίηση στα 15'</span>
357          </label>
358          <div class="notif-sub disabled" id="notif15Sub">
359            <label class="sub-check"><input type="checkbox" id="notif15Sound" checked /> Ήχος</label>
360            <label class="sub-check"><input type="checkbox" id="notif15Flash" checked /> Φλας οθόνης</label>
361            <label class="sub-check"><input type="checkbox" id="notif15Color" checked /> Χρωματική αλλαγή</label>
362          </div>
363        </div>
364      </section>
365
366      <div class="menu-divider"></div>
367
368      <!-- 3. Μεγέθη -->
369      <section class="menu-section">
370        <h3 class="menu-section-title">Μεγέθη</h3>
371
372        <div class="scale-row">
373          <div class="scale-row-label">
374            <span>Αναλογικό ρολόι</span>
375            <span class="scale-readout" id="analogScaleReadout">100%</span>
376          </div>
377          <input type="range" id="analogScaleSlider"
378                 min="10" max="100" step="5" value="100" class="scale-slider" />
379        </div>
380
381        <div class="scale-row">
382          <div class="scale-row-label">
383            <span>Ψηφιακό ρολόι</span>
384            <span class="scale-readout" id="digitalScaleReadout">80%</span>
385          </div>
386          <input type="range" id="digitalScaleSlider"
387                 min="10" max="100" step="5" value="80" class="scale-slider" />
388        </div>
389
390        <div class="scale-row">
391          <div class="scale-row-label">
392            <span>Αντίστροφη μέτρηση</span>
393            <span class="scale-readout" id="countdownScaleReadout">80%</span>
394          </div>
395          <input type="range" id="countdownScaleSlider"
396                 min="10" max="100" step="5" value="80" class="scale-slider" />
397        </div>
398
399        <div class="scale-row">
400          <div class="scale-row-label">
401            <span>Κάρτες KPI</span>
402            <span class="scale-readout" id="kpiScaleReadout">1.0×</span>
403          </div>
404          <input type="range" id="kpiScaleSlider"
405                 min="0.7" max="2.0" step="0.1" value="1.0" class="scale-slider" />
406        </div>
407
408        <div class="scale-row">
409          <div class="scale-row-label">
410            <span>Εισηγητές / Επιτηρητές/ριες</span>
411            <span class="scale-readout" id="sidePanelFontReadout">40px</span>
412          </div>
413          <input type="range" id="sidePanelFontSlider"
414                 min="10" max="60" step="1" value="40" class="scale-slider" />
415        </div>
416      </section>
417
418      <div class="menu-divider"></div>
419
420      <!-- 4. Παύση -->
421      <section class="menu-section">
422        <h3 class="menu-section-title">Παύση</h3>
423        <button class="pause-toggle-btn" id="pauseToggleBtn">
424          ⏸ Παύση Αντίστροφης Μέτρησης
425        </button>
426        <p class="menu-hint">Κατά την παύση ο χρόνος λήξης επεκτείνεται αυτόματα κατά τη διάρκεια της διακοπής.</p>
427      </section>
428
429      <div class="menu-divider"></div>
430
431      <!-- 5. Οθόνη ΛΗΞΗ -->
432      <section class="menu-section">
433        <h3 class="menu-section-title">Οθόνη ΛΗΞΗ</h3>
434        <label class="notif-master">
435          <input type="checkbox" id="endScreenToggle" />
436          <span class="toggle-track"><span class="toggle-thumb"></span></span>
437          <span class="notif-label">Αυτόματη οθόνη ΛΗΞΗ</span>
438        </label>
439        <p class="menu-hint">Εμφανίζει πλήρη κόκκινη οθόνη όταν λήξει η εξέταση. Απενεργοποιημένο εξ ορισμού.</p>
440      </section>
441
442      <div class="menu-divider"></div>
443
444      <!-- 6. Προεπιλογές -->
445      <section class="menu-section">
446        <h3 class="menu-section-title">Προεπιλογές</h3>
447        <button class="preset-btn" data-duration="120" data-departure="60">
448          <span class="preset-name">Τυπικά Γυμνάσιο / ΓΕΛ / ΕΠΑΛ</span>
449          <span class="preset-detail">2 ώρες · αποχώρηση μετά 1ω</span>
450        </button>
451        <button class="preset-btn" data-duration="180" data-departure="90">
452          <span class="preset-name">Νεοελληνική Λογοτεχνία</span>
453          <span class="preset-detail">3 ώρες · αποχώρηση μετά 1ω 30'</span>
454        </button>
455      </section>
456
457      <div class="menu-divider"></div>
458
459      <!-- 7. Βοήθεια -->
460      <section class="menu-section">
461        <button class="help-menu-btn" id="helpBtn">
462          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"
463               fill="none" stroke="currentColor" stroke-width="2"
464               stroke-linecap="round" stroke-linejoin="round">
465            <circle cx="12" cy="12" r="10"></circle>
466            <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
467            <line x1="12" y1="17" x2="12.01" y2="17"></line>
468          </svg>
469          Οδηγός Χρήσης / Βοήθεια
470        </button>
471      </section>
472
473    </div>
474  </aside>
475
476  <!-- HELP MODAL -->
477  <div class="help-backdrop" id="helpBackdrop">
478    <div class="help-modal" role="dialog" aria-label="Βοήθεια" aria-modal="true">
479      <div class="help-modal-header">
480        <h2 class="help-modal-title">Οδηγός Χρήσης</h2>
481        <button class="help-modal-close" id="helpModalClose" aria-label="Κλείσιμο">✕</button>
482      </div>
483      <div class="help-modal-body">
484
485        <div class="help-item">
486          <div class="help-item-title">Βασική Ρύθμιση</div>
487          <div class="help-item-desc">Από την επάνω μπάρα, συμπλήρωσε το μάθημα, τον εισηγητή και τις ώρες έναρξης, δυνατής αποχώρησης και λήξης. Οι ώρες αρχικοποιούνται αυτόματα (τώρα / +1ω / +2ω). Οι KPI κάρτες δεξιά ενημερώνονται αυτόματα κάθε δευτερόλεπτο.</div>
488        </div>
489
490        <div class="help-item">
491          <div class="help-item-title">Παράταση Χρόνου</div>
492          <div class="help-item-desc">Τα κουμπιά <strong>+1 / +5 / +15 λεπτά</strong> επεκτείνουν ταυτόχρονα την ώρα λήξης και την ώρα δυνατής αποχώρησης. Χρήσιμο για on-the-fly παράταση χωρίς να ανοίξεις τη φόρμα.</div>
493        </div>
494
495        <div class="help-item">
496          <div class="help-item-title">Ειδοποιήσεις 30' &amp; 15'</div>
497          <div class="help-item-desc">Ενεργοποίησε το toggle για να λαμβάνεις αυτόματη ειδοποίηση όταν απομένουν 30 ή 15 λεπτά. Επέλεξε ένα ή περισσότερα από τα παρακάτω:<br>• <strong>Ήχος</strong> — beep από το browser<br>• <strong>Φλας οθόνης</strong> — στιγμιαίο flash κίτρινου χρώματος<br>• <strong>Χρωματική αλλαγή</strong> — η κάρτα ΛΗΞΗ αλλάζει χρώμα για 30 δευτερόλεπτα</div>
498        </div>
499
500        <div class="help-item">
501          <div class="help-item-title">Μεγέθη</div>
502          <div class="help-item-desc">Οι sliders ρυθμίζουν ξεχωριστά το μέγεθος του αναλογικού ρολογιού, του ψηφιακού ρολογιού, της αντίστροφης μέτρησης και των KPI καρτών. Χρήσιμο για προσαρμογή σε διαφορετικές αποστάσεις θέασης (προτζέκτορας, τηλεόραση).</div>
503        </div>
504
505        <div class="help-item">
506          <div class="help-item-title">Παύση</div>
507          <div class="help-item-desc">Το κουμπί παύσης παγώνει την αντίστροφη μέτρηση και τις KPI κάρτες — το πραγματικό ρολόι συνεχίζει κανονικά. Όταν κάνεις <strong>Συνέχεια</strong>, ο χρόνος λήξης και αποχώρησης επεκτείνονται αυτόματα κατά τη διάρκεια της παύσης. Ένα πορτοκαλί banner υπενθυμίζει ότι η εξέταση είναι σε παύση.</div>
508        </div>
509
510        <div class="help-item">
511          <div class="help-item-title">Αυτόματη Οθόνη ΛΗΞΗ</div>
512          <div class="help-item-desc">Όταν είναι ενεργοποιημένη, εμφανίζεται αυτόματα μια πλήρης κόκκινη οθόνη με flashing κείμενο "ΛΗΞΗ ΕΞΕΤΑΣΗΣ" τη στιγμή που λήγει η εξέταση. Κάνε κλικ οπουδήποτε για να την κλείσεις. <strong>Απενεργοποιημένη εξ ορισμού.</strong></div>
513        </div>
514
515        <div class="help-item">
516          <div class="help-item-title">Προεπιλογές</div>
517          <div class="help-item-desc">Γρήγορη φόρτωση έτοιμων ρυθμίσεων:<br>• <strong>Τυπικά Γυμνάσιο/ΓΕΛ/ΕΠΑΛ</strong> — 2 ώρες, αποχώρηση μετά 1ω<br>• <strong>Νεοελληνική Λογοτεχνία</strong> — 3 ώρες, αποχώρηση μετά 1ω 30'<br>Η έναρξη ορίζεται αυτόματα στην τρέχουσα ώρα.</div>
518        </div>
519
520        <div class="help-item">
521          <div class="help-item-title">Πλήρης Οθόνη</div>
522          <div class="help-item-desc">Το κουμπί <strong>Πλήρης Οθόνη</strong> κρύβει την μπάρα ρυθμίσεων και μεγεθύνει το ρολόι και τις KPI κάρτες. Πάτα <strong>Esc</strong> ή το κουμπί Έξοδος για επιστροφή.</div>
523        </div>
524
525        <div class="help-item">
526          <div class="help-item-title">Offline Λειτουργία</div>
527          <div class="help-item-desc">Μετά την πρώτη φόρτωση, το site λειτουργεί πλήρως χωρίς σύνδεση στο internet. Αν δεν υπάρχει δίκτυο, χρησιμοποιείται το τοπικό ρολόι της συσκευής αντί του WorldTimeAPI.</div>
528        </div>
529
530      </div>
531    </div>
532  </div>
533
534  <!-- QUICK SETUP MODAL -->
535  <div class="qs-backdrop hidden" id="qsBackdrop">
536    <div class="qs-modal" role="dialog" aria-label="Γρήγορη Ρύθμιση" aria-modal="true">
537
538      <div class="qs-header">
539        <div>
540          <h2 class="qs-title">Γρήγορη Ρύθμιση</h2>
541          <p class="qs-subtitle" id="qsSubtitle">
541Βάσει έναρξης: 10:00</p>
542        </div>
543        <button class="qs-close" id="qsClose" aria-label="Κλείσιμο">✕</button>
544      </div>
545
546      <div class="qs-body">
547
548        <div class="qs-section">
549          <div class="qs-section-label">ΑΠΟΧΩΡΗΣΗ μετά από έναρξη</div>
550          <div class="qs-btn-group" id="qsDepartureGroup">
551            <button class="qs-btn" data-offset="30">
552              <span class="qs-offset">+30'</span>
553              <span class="qs-calc-time"></span>
554            </button>
555            <button class="qs-btn" data-offset="45">
556              <span class="qs-offset">+45'</span>
557              <span class="qs-calc-time"></span>
558            </button>
559            <button class="qs-btn" data-offset="60">
560              <span class="qs-offset">+1ω</span>
561              <span class="qs-calc-time"></span>
562            </button>
563            <button class="qs-btn" data-offset="90">
564              <span class="qs-offset">+1ω30'</span>
565              <span class="qs-calc-time"></span>
566            </button>
567          </div>
568        </div>
569
570        <div class="qs-divider"></div>
571
572        <div class="qs-section">
573          <div class="qs-section-label">ΛΗΞΗ μετά από έναρξη</div>
574          <div class="qs-btn-group" id="qsEndGroup">
575            <button class="qs-btn" data-offset="60">
576              <span class="qs-offset">+1ω</span>
577              <span class="qs-calc-time"></span>
578            </button>
579            <button class="qs-btn" data-offset="90">
580              <span class="qs-offset">+1ω30'</span>
581              <span class="qs-calc-time"></span>
582            </button>
583            <button class="qs-btn" data-offset="120">
584              <span class="qs-offset">+2ω</span>
585              <span class="qs-calc-time"></span>
586            </button>
587            <button class="qs-btn" data-offset="180">
588              <span class="qs-offset">+3ω</span>
589              <span class="qs-calc-time"></span>
590            </button>
591          </div>
592        </div>
593
594      </div>
595    </div>
596  </div>
597
598  <!-- Overlay ΛΗΞΗ ΕΞΕΤΑΣΗΣ -->
599  <div class="end-screen-overlay hidden" id="endScreenOverlay">
600    <div class="end-screen-text">ΛΗΞΗ ΕΞΕΤΑΣΗΣ</div>
601    <p class="end-screen-hint">Κάντε κλικ για κλείσιμο</p>
602  </div>
603
604  <footer class="app-footer">
605    <p class="seo-tagline">Δωρεάν χρονόμετρο εξετάσεων για Γυμνάσιο, ΓΕΛ &amp; ΕΠΑΛ — ρολόι, αντίστροφη μέτρηση &amp; ειδοποιήσεις για την αίθουσα</p>
606    © 2026 | Αρης Ανδρεάδης ΠΕ86 |
607    <a class="footer-site-link" href="https://andreadis.me" target="_blank" rel="noopener">andreadis.me</a>
608    | Αναφορά σφαλμάτων:
609    <a href="mailto:[email protected]">[email protected]</a>
610  </footer>
611
612  
612<script src="script.js"></script>
612
613  
613<script src="menu.js"></script>
613
614  
614<script>
615    if ('serviceWorker' in navigator) {
616      navigator.serviceWorker.register('/sw.js').catch(() => {});
617    }
618  </script>
618
619  
619<script data-goatcounter="https://exetaseis.goatcounter.com/count"
620        async src="//gc.zgo.at/count.js"></script>
620
621</body>
622</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.