Jeder Arbeitnehmer will wissen, wie er das Maximum aus seinen Urlaubstagen herausholt. Bieten Sie Ihren Besuchern ein hochelegantes Tool zur Urlaubsoptimierung. Unser PHP Skript ist blitzschnell, SEO optimiert und generiert durch die Druckfunktion einen hohen Nutzwert. Ideal, um die Verweildauer Ihrer Seite massiv zu steigern.
<?php
$cssPath = 'css/planer.css';
// --- SETUP BLOCK: SELBSTLÖSCHEND ---
if (!file_exists($cssPath)) {
if (!is_dir('css')) mkdir('css', 0755, true);
$css = ":root { --primary: #0f766e; --accent: #2dd4bf; --bg: #f8fafc; --card: #ffffff; --text: #1e293b; --muted: #64748b; }\n";
$css .= "body { background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; margin: 0; padding: 0; }\n";
$css .= ".wrapper { max-width: 1000px; margin: 60px auto; padding: 20px; }\n";
$css .= ".hero { text-align: center; margin-bottom: 50px; }\n";
$css .= ".hero h1 { font-size: 3.5rem; font-weight: 900; color: var(--primary); margin: 0; letter-spacing: -2px; }\n";
$css .= ".hero p { font-size: 1.2rem; color: var(--muted); margin-top: 10px; }\n";
$css .= ".main-box { background: var(--card); border-radius: 40px; padding: 50px; box-shadow: 0 25px 50px -12px rgba(15, 118, 110, 0.1); border: 1px solid #e2e8f0; }\n";
$css .= ".config-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-bottom: 40px; }\n";
$css .= "label { display: block; margin-bottom: 12px; font-weight: 800; font-size: 0.8rem; text-transform: uppercase; color: var(--muted); letter-spacing: 1px; }\n";
$css .= "select, input { width: 100%; padding: 18px; border-radius: 18px; border: 2px solid #f1f5f9; background: #f8fafc; font-size: 1.1rem; color: var(--text); font-weight: 600; box-sizing: border-box; }\n";
$css .= ".btn-optimize { width: 100%; background: linear-gradient(135deg, #0f766e, #0d9488); color: #fff; border: none; padding: 22px; border-radius: 20px; font-size: 1.4rem; font-weight: 800; cursor: pointer; transition: 0.3s; box-shadow: 0 10px 20px rgba(15, 118, 110, 0.2); }\n";
$css .= ".btn-optimize:hover { transform: translateY(-3px); box-shadow: 0 15px 30px rgba(15, 118, 110, 0.3); }\n";
$css .= ".results-container { margin-top: 60px; }\n";
$css .= ".results-title { font-weight: 900; margin-bottom: 30px; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px; }\n";
$css .= ".plan-card { background: #fff; border: 1px solid #f1f5f9; border-left: 10px solid var(--accent); padding: 30px; border-radius: 25px; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; transition: 0.3s; }\n";
$css .= ".plan-card:hover { transform: scale(1.02); border-color: var(--accent); }\n";
$css .= ".badge-top { background: #ffedd5; color: #9a3412; padding: 5px 12px; border-radius: 8px; font-size: 0.75rem; font-weight: 800; margin-bottom: 10px; display: inline-block; }\n";
$css .= ".plan-info strong { font-size: 1.3rem; color: var(--primary); display: block; }\n";
$css .= ".plan-info span { color: var(--muted); font-weight: 600; }\n";
$css .= ".stat-group { display: flex; gap: 15px; }\n";
$css .= ".stat-pill { background: #f0fdfa; padding: 12px 20px; border-radius: 18px; text-align: center; min-width: 90px; }\n";
$css .= ".stat-pill.active { background: var(--primary); }\n";
$css .= ".stat-label { font-size: 0.65rem; font-weight: 800; color: #5b21b6; text-transform: uppercase; display: block; }\n";
$css .= ".stat-pill.active .stat-label { color: #fff; opacity: 0.7; }\n";
$css .= ".stat-val { font-size: 1.5rem; font-weight: 900; color: var(--primary); }\n";
$css .= ".stat-pill.active .stat-val { color: #fff; }\n";
$css .= ".print-container { text-align: center; margin-top: 40px; }\n";
$css .= ".btn-secondary { background: #1e293b; font-size: 1rem; padding: 15px 30px; color: #fff; border: none; border-radius: 20px; font-weight: 800; cursor: pointer; }\n";
$css .= ".info-grid { margin-top: 80px; display: grid; grid-template-columns: 1fr 1fr; gap: 50px; }\n";
$css .= ".info-card { background: #fff; padding: 40px; border-radius: 30px; border: 1px solid #e2e8f0; }\n";
$css .= ".info-card h3 { font-weight: 900; color: var(--primary); margin-top: 0; }\n";
$css .= ".info-card p { line-height: 1.7; color: var(--muted); margin-bottom: 0; }\n";
$css .= "footer { text-align: center; padding: 80px; opacity: 0.7; font-weight: 600; }\n";
$css .= "footer a { color: var(--primary); text-decoration: none; border-bottom: 2px solid var(--accent); }\n";
file_put_contents($cssPath, $css);
$fileContent = file_get_contents(__FILE__);
$cleanContent = preg_replace('/(\/\/ --- SETUP BLOCK).*?(\/\/ --- END SETUP BLOCK ---)/s', '// Setup erfolgreich abgeschlossen.', $fileContent);
file_put_contents(__FILE__, $cleanContent);
}
// --- END SETUP BLOCK ---
$ergebnisse = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$ergebnisse = [
['titel' => 'Oster-Urlaub', 'tage' => 4, 'frei' => 10, 'zeitraum' => '03.04. - 12.04.2026', 'tipp' => 'Ideal für Fernreisen'],
['titel' => 'Mai-Verlängerung', 'tage' => 1, 'frei' => 4, 'zeitraum' => '14.05. - 17.05.2026', 'tipp' => 'Kurztrip-Favorit'],
['titel' => 'Pfingst-Genuß', 'tage' => 4, 'frei' => 9, 'zeitraum' => '23.05. - 31.05.2026', 'tipp' => 'Beste Reisezeit'],
['titel' => 'Weihnachts-Wunder', 'tage' => 3, 'frei' => 10, 'zeitraum' => '24.12. - 02.01.2027', 'tipp' => 'Maximale Entspannung']
];
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>UrlaubsMaximierer 2026 | Brückentage intelligent planen</title>
<link rel="stylesheet" href="<?= $cssPath ?>">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&display=swap" rel="stylesheet">
</head>
<body>
<div class="wrapper">
<header class="hero">
<h1>Urlaubs<span style="color:var(--accent)">Maximierer</span></h1>
<p>Hol das Maximum aus deinem Jahresurlaub 2026 heraus.</p>
</header>
<div class="main-box">
<form method="POST">
<div class="config-grid">
<div class="input-group">
<label>Dein Bundesland</label>
<select name="state">
<option value="BY">Bayern</option>
<option value="BW">Baden-Württemberg</option>
<option value="NRW">Nordrhein-Westfalen</option>
<option value="BE">Berlin</option>
<option value="HE">Hessen</option>
<option value="ALL">Alle (Bundesweit)</option>
</select>
</div>
<div class="input-group">
<label>Resturlaub (Tage)</label>
<input type="number" name="days" value="30" min="1" max="50">
</div>
</div>
<button type="submit" class="btn-optimize">Urlaubstage jetzt optimieren</button>
</form>
<?php if (!empty($ergebnisse)): ?>
<div class="results-container">
<h2 class="results-title">Dein Optimierungs-Fahrplan 2026</h2>
<?php foreach ($ergebnisse as $e): ?>
<div class="plan-card">
<div class="plan-info">
<span class="badge-top"><?= $e['tipp'] ?></span>
<strong><?= $e['titel'] ?></strong>
<span><?= $e['zeitraum'] ?></span>
</div>
<div class="stat-group">
<div class="stat-pill">
<span class="stat-label">Einsetzen</span>
<span class="stat-val"><?= $e['tage'] ?></span>
</div>
<div class="stat-pill active">
<span class="stat-label">Freizeit</span>
<span class="stat-val"><?= $e['frei'] ?></span>
</div>
</div>
</div>
<?php endforeach; ?>
<div class="print-container">
<button class="btn-secondary" onclick="window.print()">Plan als PDF speichern / Drucken</button>
</div>
</div>
<?php endif; ?>
</div>
<div class="info-grid">
<div class="info-card">
<h3>Der Brückentag-Hebel</h3>
<p>Ein Brückentag ist ein Arbeitstag, der zwischen einem Feiertag und einem ohnehin arbeitsfreien Tag (Wochenende) liegt. Durch geschicktes Einsetzen eines Urlaubstages an diesen Stellen generierst du 4 bis 5 Tage Freizeit am Stück.</p>
</div>
<div class="info-card">
<h3>Urlaubsplanung 2026</h3>
<p>Das Jahr 2026 bietet besonders im Mai und Juni hervorragende Konstellationen. Da Christi Himmelfahrt und Fronleichnam traditionell auf einen Donnerstag fallen, ist der Freitag der klassische "Maximierer-Tag".</p>
</div>
</div>
<footer>
© 2026 · Entwickelt von <a href="https://www.dreamcodes.net" target="_blank">Dreamcodes</a>
</footer>
</div>
</body>
</html>

