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>ΡολÏι ÎξεÏάÏεÏν | ΧÏονÏμεÏÏο & ÎνÏίÏÏÏοÏη ÎÎÏÏηÏη για ÎξεÏάÏειÏ</title> 10 <meta name="description" content="ÎÏÏεάν ÏολÏι εξεÏάÏεÏν για ÎÏ Î¼Î½Î¬Ïιο, ÎÎÎ & ÎÎ ÎÎ. ΧÏονÏμεÏÏο με ανÏίÏÏÏοÏη μÎÏÏηÏη, ειδοÏοιήÏÎµÎ¹Ï 30'/15', αναλογική & ÏηÏιακή ÏÏοβολή. ÎÎ´Î±Î½Î¹ÎºÏ Î³Î¹Î± Î±Î¯Î¸Î¿Ï Ïα εξεÏάÏεÏν." /> 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' & 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">ÎÏÏεάν ÏÏονÏμεÏÏο εξεÏάÏεÏν για ÎÏ Î¼Î½Î¬Ïιο, ÎÎÎ & ÎÎ ÎÎ â ÏολÏι, ανÏίÏÏÏοÏη μÎÏÏηÏη & ειδοÏοιήÏÎµÎ¹Ï Î³Î¹Î± Ïην Î±Î¯Î¸Î¿Ï Ïα</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.