# Urlaubsanspruch-Rechner - Comprehensive Documentation

**Last Updated:** 2026-03-29

## SEO / AEO / GEO refresh (2026-03)

- **Pipeline artifacts:** `docs/content/tools/urlaubsanspruch-rechner/` (keywords, PAA, competitor JSON, `CONTENT_OUTLINE.md`, `SERP_ANALYSIS.md`, `data/METRICS_SUMMARY.md` – GSC/GA4 dort einpflegen, wenn verfügbar).
- **SERP gap matrix:** `docs/guides/tools-pages/data/urlaubsanspruch-rechner-serp-gap-matrix.md`
- **Page file:** `v2/pages/tools_urlaubsanspruchrechner.php` (Ratgeber-Block `#urlaubsanspruch-guide`, HowTo-Fragment `#howto`, erweiterte FAQs, interne Links).
- **Schema:** `WebApplication` ohne `aggregateRating`; `screenshot` = `https://www.ordio.com/v2/img/og/urlaubsanspruch-rechner.webp`; `HowTo` + `FAQPage` + `Calculator` + `BreadcrumbList`; FAQ-`acceptedAnswer`-Texte an sichtbare FAQ-Antworten angeglichen.
- **Rich Results:** Nach Deploy der aktualisierten Seite die Produktions-URL mit dem [Google Rich Results Test](https://search.google.com/test/rich-results) prüfen (WebApplication, FAQPage, HowTo). **Lokal/CI:** `make validate` inkl. `composer schema` (Stand 2026-03-29 grün). **Produktion (vor Deploy des Refreshes):** Live-HTML enthält bereits `FAQPage` in JSON-LD; nach Auslieferung des neuen Markups erneut testen.
- **Rechtliche Freigabe:** FAQs und Ratgebertexte mit BUrlG-Bezug (§4/§5, Verfall, Kündigung) bei Bedarf durch HR/Recht oder Fachanwalt gegenlesen lassen – der Rechner ersetzt keine Beratung.

## Tool Overview

### Basic Information

- **Tool Name:** Urlaubsanspruch-Rechner
- **Slug:** `urlaubsanspruch-rechner`
- **URL:** `https://www.ordio.com/tools/urlaubsanspruch-rechner`
- **Status:** Available
- **Last Updated:** 2026-03-29

### Purpose

Calculate vacation entitlement according to German Federal Vacation Act (BUrlG) for various employment scenarios including termination, part-time, Minijob, youth employment, and disabled employees. Supports both daily and hourly calculation modes with BUrlG § 4 and § 5 compliance.

### Use Cases

- **Employees:** Calculate vacation entitlement at termination
- **HR Professionals:** Calculate vacation for part-time employees
- **Minijob Workers:** Calculate vacation entitlement for Minijob
- **Youth Employees:** Calculate vacation for employees under 18
- **Disabled Employees:** Calculate vacation with additional days (SGB IX)
- **Termination Scenarios:** Calculate remaining vacation at termination

### Real-World Scenarios

**Scenario 1: Employee Calculating Vacation at Termination**

- **User:** Employee leaving company mid-year
- **Situation:** Started January 1, leaving June 30, has 30 days annual vacation entitlement
- **Goal:** Calculate remaining vacation days to be paid out
- **Steps:**
  1. Enter employment start date: January 1
  2. Enter termination date: June 30
  3. Enter annual vacation entitlement: 30 days
  4. Select calculation mode (daily/hourly)
  5. Review calculated vacation entitlement
  6. Verify payout amount
- **Result:** Sees 15 days remaining vacation entitlement (6 months × 2.5 days/month)
- **Related Tools:** [Arbeitstage-Rechner](arbeitstage-rechner-documentation.md) (for working days calculation), [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for payout calculation)

**Scenario 2: HR Manager Calculating Part-Time Vacation**

- **User:** HR professional processing part-time employee vacation
- **Situation:** Employee works 20 hours/week (50% part-time), standard entitlement is 30 days
- **Goal:** Calculate correct vacation entitlement for part-time employee
- **Steps:**
  1. Enter part-time percentage: 50%
  2. Enter standard vacation entitlement: 30 days
  3. Select part-time calculation mode
  4. Review calculated entitlement
  5. Document for payroll
- **Result:** Sees 30 days entitlement (same as full-time, but calculated per working day)
- **Related Tools:** [Arbeitszeitrechner](arbeitszeitrechner-documentation.md) (for working hours verification), [Arbeitstage-Rechner](arbeitstage-rechner-documentation.md) (for working days)

**Scenario 3: Minijob Worker Planning Vacation**

- **User:** Minijob worker planning vacation days
- **Situation:** Works 2 days/week (Minijob), wants to know vacation entitlement
- **Goal:** Understand vacation rights as Minijob worker
- **Steps:**
  1. Enter Minijob status
  2. Enter working days per week: 2 days
  3. Enter standard entitlement: 20 days
  4. Calculate Minijob vacation entitlement
  5. Plan vacation accordingly
- **Result:** Sees 8 days vacation entitlement (2 days/week × 4 weeks)
- **Related Tools:** [Minijob-Rechner](minijob-rechner-documentation.md) (for Minijob salary calculation), [Arbeitszeitrechner](arbeitszeitrechner-documentation.md) (for working hours)

**Scenario 4: Employer Processing Youth Employee Vacation**

- **User:** Employer managing youth employee (under 18)
- **Situation:** 17-year-old employee, works full-time, needs vacation calculation
- **Goal:** Ensure compliance with JArbSchG (youth employment regulations)
- **Steps:**
  1. Select youth employee option
  2. Enter age: 17
  3. Enter employment period
  4. Review enhanced vacation entitlement (30+ days for under 18)
  5. Ensure compliance with JArbSchG
- **Result:** Sees 30+ days entitlement (enhanced for youth employees)
- **Related Tools:** [Arbeitszeitrechner](arbeitszeitrechner-documentation.md) (for youth working hours compliance), [Zuschlagsrechner](zuschlagsrechner-documentation.md) (for shift surcharges)

### Target Audience

- Employees
- HR professionals
- Minijob workers
- Youth employees
- Disabled employees
- Business owners

### Visual Description

**Hero Section:**

- Layout: Centered hero section with badge, headline, and description
- Badge: "Urlaubsanspruch" badge
- Headline: Large bold headline "Urlaubsanspruch-Rechner 2026: Kündigung & Minijob" with blue accent
- Description: Paragraph explaining BUrlG-compliant calculation
- Background: Gradient blur effect

**Visual Examples (To Be Added):**

**Hero Section Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/urlaubsanspruch-rechner-hero.png`
- Description: Full hero section showing badge, headline, description
- Dimensions: 1920x1080 (desktop), 375x667 (mobile)
- Shows: Complete above-fold content with visual styling

**Calculator Form Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/urlaubsanspruch-rechner-form.png`
- Description: Calculator form showing Simple and Detailed modes with BUrlG inputs
- Dimensions: 1920x1080 (desktop)
- Shows: Mode selection, date inputs, employment type selection, calculate button

**Result Display Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/urlaubsanspruch-rechner-results.png`
- Description: Results section showing vacation entitlement, breakdown, compliance indicators
- Dimensions: 1920x1080 (desktop)
- Shows: Primary vacation days display, BUrlG compliance breakdown, calculation details

**Vacation Calculation Flow Diagram:**

- Location: `docs/guides/tools-pages/diagrams/urlaubsanspruch-rechner-flow.svg`
- Description: Flow diagram showing vacation entitlement calculation process
- Format: SVG (vector) for scalability
- Shows: Input → Calculation → Output flow with BUrlG compliance checks

**Calculator Form:**

- Layout: Large white card with rounded corners, shadow, max-width container
- Mode Toggle: Two modes (Simple / Detailed) with icons
- Form Sections: Multiple sections:
  - Employment Period: Start date, end date (optional), calculation year
  - Work Schedule: Workdays per week (5/6), calculation type (daily/hourly)
  - Special Cases: Disabled employee toggle, youth employment toggle, contract vacation slider
  - State Selection: German state for holiday consideration
- Input Fields: Date pickers, selects, radio buttons, toggles, slider
- Calculate Button: Large blue button "Urlaub berechnen"
- Styling: Blue accent color (#4D8EF3), gray borders, rounded corners

**Result Display:**

- Layout: Results section below form (scrolls into view after calculation)
- Main Result: Large number display showing final vacation days
- Summary Cards: Multiple cards showing:
  - Legal Vacation Days (Gesetzlicher Urlaub)
  - Contract Vacation Days (Vertraglicher Urlaub, if applicable)
  - Final Vacation Days (Finaler Urlaubsanspruch)
  - Employment Period (Beschäftigungszeitraum)
  - Months Employed (Beschäftigungsmonate)
- Detailed Breakdown: Collapsible sections showing:
  - Calculation details
  - BUrlG compliance information
  - Pro-rating explanation
- Vacation Tips: Personalized optimization tips
- Export Options: PDF and CSV export buttons (email gating)

### UI/UX Flow

**Initial Load:**

- Page loads with hero section visible
- Calculator form shows default values:
  - Mode: Simple
  - Start Date: 2026-01-01 (✅ Updated: should be 2026)
  - End Date: Empty
  - Workdays: 5 Tage
  - Calculation Type: Daily
  - Year: Current year (2026)
- No results displayed initially

**User Interaction Flow:**

1. User selects start date
2. User optionally selects end date (for termination scenarios)
3. User selects calculation year
4. User selects workdays per week (5 or 6)
5. User selects calculation type (daily or hourly)
6. If hourly: User enters weekly hours and daily hours
7. User can toggle special cases (disabled, youth)
8. User can set contract vacation (slider)
9. User selects German state (for holiday consideration)
10. User clicks "Urlaub berechnen" button
11. Calculation runs with BUrlG compliance checks
12. Results displayed with detailed breakdown
13. Vacation optimization tips generated
14. User can export PDF or CSV (email gating)

**Error Handling Flow:**

- Input validation: Date validation, required fields
- BUrlG compliance warnings: 6-month waiting period warnings
- Results only shown after successful calculation

## Technical Documentation

### File Structure

- **PHP File:** `v2/pages/tools_urlaubsanspruchrechner.php` (4,412 lines)
- **JavaScript:** Inline Alpine.js component (embedded in PHP file, line 790+)
- **CSS:** Uses shared `v2/css/tools-pages.css` + extensive inline styles
- **External Libraries:** jsPDF (lazy loaded), html2canvas (lazy loaded)

### Code Organization

**Alpine.js Component Structure:**

- Main component: `vacationCalculatorData()` function (line 796)
- Global registration: Registered with `Alpine.data()` (line 2886)
- All logic embedded in PHP file
- Complex state management for calculation, tips, export

**State Management:**

- Alpine.js reactive state for all UI state
- localStorage for email collection status
- No URL parameter sharing

**Code Patterns:**

- Alpine.js reactive data properties
- Debounced calculation function
- Complex BUrlG calculation logic
- Vacation optimization tips generation
- Export functions (PDF, CSV)

### Calculation Modes

**Mode 1: Daily Calculation (Traditional)**

- **Visual Description:** Standard daily-based calculation
- **Purpose:** Calculate vacation based on workdays per week
- **Input Fields:**

  - `startDate` (date): Employment start date
    - Required: Yes
    - Default: 2026-01-01 (✅ Updated: should be 2026)
  - `endDate` (date): Employment end date (optional)
    - Required: No
    - Default: Empty
  - `year` (number): Calculation year
    - Required: Yes
    - Default: Current year (2026)
  - `workDaysPerWeek` (radio): Workdays per week
    - Options: 5 Tage, 6 Tage
    - Default: 5 Tage
    - Required: Yes
  - `isDisabled` (toggle): Disabled employee
    - Default: false
    - Effect: +5 days (SGB IX)
  - `isYouth` (toggle): Youth employee
    - Default: false
    - Effect: Different base days (JArbSchG)
  - `youthAge` (number): Youth age (if youth enabled)
    - Options: 15, 16, 17
    - Default: 16
  - `contractDays` (slider): Contract vacation days
    - Default: 25
    - Min: 20
    - Max: 35
    - Optional: Yes
  - `selectedState` (select): German state
    - Options: All states + "Alle Bundesländer"
    - Default: "all"
    - Purpose: Holiday consideration

- **Output Fields:**

  - `baseVacationDays` (number): Base vacation days before pro-rating
  - `monthsEmployed` (number): Full months employed in calculation year
  - `legalVacationDays` (number): Legal vacation days (pro-rated if applicable)
  - `contractVacationDays` (number): Contract vacation days (if applicable)
  - `proratedVacation` (number): Final vacation days (rounded up)
  - `hasCompletedSixMonths` (boolean): 6-month waiting period fulfilled
  - `isFirstYearOfEmployment` (boolean): First year of employment
  - `isFullVacationEntitlement` (boolean): Full year entitlement

- **Formula:**

  ```
  // Base vacation calculation
  If workDaysPerWeek === 5:
    baseVacationDays = (5 / 6) * 24 = 20 days
  Else if workDaysPerWeek === 6:
    baseVacationDays = 24 days

  // Special cases
  If isDisabled:
    baseVacationDays += 5 days (SGB IX)

  If isYouth:
    If youthAge === 15:
      baseVacationDays = 30 days
    Else if youthAge === 16:
      baseVacationDays = 27 days
    Else if youthAge === 17:
      baseVacationDays = 25 days

  // Pro-rating (BUrlG § 4 and § 5)
  monthsEmployed = calculateMonthsBetween(employmentStart, employmentEnd)

  If isFirstYearOfEmployment:
    If hasCompletedSixMonths:
      legalVacationDays = baseVacationDays (full entitlement)
    Else:
      fullMonthsInYear = calculateFullMonthsInYear(startDate, endDate, year)
      legalVacationDays = (baseVacationDays / 12) * fullMonthsInYear
  Else:
    If monthsEmployed === 0:
      legalVacationDays = 0
    Else if hasCompletedSixMonths:
      If employmentEndsInFirstHalf:
        fullMonthsInYear = calculateFullMonthsInYear(startDate, endDate, year)
        legalVacationDays = (baseVacationDays / 12) * fullMonthsInYear
      Else:
        legalVacationDays = baseVacationDays (full entitlement)
    Else:
      fullMonthsInYear = calculateFullMonthsInYear(startDate, endDate, year)
      legalVacationDays = (baseVacationDays / 12) * fullMonthsInYear

  // Final vacation (higher of legal or contract)
  If contractVacationDays > legalVacationDays:
    finalVacationDays = contractVacationDays
  Else:
    finalVacationDays = legalVacationDays

  // Rounding (BUrlG § 5 Abs. 2)
  If finalVacationDays < 0.5:
    finalVacationResult = 0
  Else:
    finalVacationResult = Math.ceil(finalVacationDays) // Round UP
  ```

**Mode 2: Hourly Calculation (Since 2021)**

- **Visual Description:** Hourly-based calculation for flexible work schedules
- **Purpose:** Calculate vacation based on weekly hours (new German law since 2021)
- **Input Fields:**

  - Same as daily mode, plus:
  - `calculationType` (radio): Calculation type
    - Options: Daily, Hourly
    - Default: Daily
  - `weeklyHours` (number): Weekly working hours
    - Default: 40
    - Required: Yes (if hourly)
  - `dailyHours` (number): Daily working hours
    - Default: 8
    - Required: Yes (if hourly)

- **Output Fields:**

  - Same as daily mode, plus:
  - `vacationHours` (number): Vacation hours (if hourly)
  - `dailyHours` (number): Daily hours used

- **Formula:**

  ```
  // Hourly calculation (since 2021 German law)
  legalVacationHours = 144 hours (24 days * 6 hours for 6-day week)
  baseVacationHours = (weeklyHours / 36) * legalVacationHours
  baseVacationDays = baseVacationHours / dailyHours

  // Then apply same pro-rating and rounding logic as daily mode
  ```

### Constants and Thresholds

**2026 Values:**

- **Legal Base Days:** 24 days (for 6-day week) = 20 days (for 5-day week)
- **Legal Vacation Hours:** 144 hours (24 days \* 6 hours)
- **6-Month Waiting Period:** Required for full vacation entitlement (BUrlG § 4)
- **Youth Vacation Days:**
  - Age 15: 30 days
  - Age 16: 27 days
  - Age 17: 25 days
- **Disabled Employee Bonus:** +5 days (SGB IX)
- **Contract Vacation Range:** 20-35 days (typical)
- **Rounding Rule:** Round UP if ≥ 0.5 days (BUrlG § 5 Abs. 2)

**Previous Values (for reference):**

- Same legal minimums (BUrlG stable)
- Hourly calculation added in 2021

### Validation Rules

- Start Date: Valid date, required
- End Date: Valid date, after start date (if provided)
- Year: Valid year, required
- Workdays Per Week: 5 or 6, required
- Weekly Hours: min=1, max=60 (if hourly)
- Daily Hours: min=1, max=12 (if hourly)
- Contract Days: min=20, max=35 (if slider enabled)
- Youth Age: 15, 16, or 17 (if youth enabled)

### Edge Cases Handled

- Partial year employment (pro-rating)
- Termination scenarios (end date provided)
- First year of employment (6-month waiting period)
- Employment ending in first half of year (BUrlG § 5)
- Less than 6 months employment (warning, pro-rated)
- Youth employment (different base days)
- Disabled employees (additional days)
- Contract vacation override (higher value applies)
- Hourly calculation (since 2021)
- Year transitions (multi-year calculations)
- Month calculation (15-day rule)

### Dependencies

- **External Libraries:**
  - jsPDF: PDF generation (lazy loaded)
  - html2canvas: HTML to canvas conversion for PDF (lazy loaded)
- **APIs:** None
- **Alpine.js:** Used for reactive UI (version from base includes)
- **Inline JavaScript:** All logic embedded in PHP file

## Functions & Methods

### Main Component Function

**Function:** `vacationCalculatorData()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:796`
- **Purpose:** Main Alpine.js component for vacation calculator
- **Returns:** Alpine.js component object
- **Dependencies:** Alpine.js framework
- **Side Effects:** Manages DOM state, triggers calculations

### Calculation Functions

**Function:** `calculateVacation()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1298`
- **Purpose:** Debounced calculation trigger
- **Parameters:** None (uses component state)
- **Returns:** void (calls `performCalculation()`)
- **Dependencies:** `performCalculation()`
- **Side Effects:** Sets calculation flags, debounces calls

**Function:** `performCalculation()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1332`
- **Purpose:** Main calculation function with BUrlG compliance
- **Parameters:** None (uses component state)
- **Returns:** void (sets component state)
- **Dependencies:** `calculateMonthsBetween()`, `calculateFullMonthsInYear()`
- **Side Effects:** Updates `results` object, sets `showResults` to true

**Function:** `calculateMonthsBetween(startDate, endDate)`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1559`
- **Purpose:** Calculate full months between dates (15-day rule)
- **Parameters:**
  - `startDate` (Date): Start date
  - `endDate` (Date): End date
- **Returns:** Number (months, 0-12)
- **Dependencies:** None (pure calculation)
- **Side Effects:** None

**Function:** `calculateFullMonthsInYear(startDate, endDate, year)`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1598`
- **Purpose:** Calculate full months within specific year (for pro-rating)
- **Parameters:**
  - `startDate` (Date): Start date
  - `endDate` (Date): End date
  - `year` (number): Calculation year
- **Returns:** Number (full months)
- **Dependencies:** None (pure calculation)
- **Side Effects:** None

**Function:** `calculateEasterDates(year)`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1030`
- **Purpose:** Calculate Easter and related holidays (Gauss algorithm)
- **Parameters:**
  - `year` (number): Year
- **Returns:** Object with holiday dates
- **Dependencies:** None (pure calculation)
- **Side Effects:** None

### Export Functions

**Function:** `exportToPDF()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1785`
- **Purpose:** Export calculation to PDF
- **Parameters:** None (uses component state)
- **Returns:** void (triggers download)
- **Dependencies:** jsPDF, html2canvas
- **Side Effects:** Shows email modal if needed, downloads PDF

**Function:** `exportToCSV()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1799`
- **Purpose:** Export calculation to CSV
- **Parameters:** None (uses component state)
- **Returns:** void (triggers download)
- **Dependencies:** None (pure string generation)
- **Side Effects:** Shows email modal if needed, downloads CSV

### Vacation Tips Functions

**Function:** `loadVacationTips()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:1525`
- **Purpose:** Generate and display vacation optimization tips
- **Parameters:** None (uses component state)
- **Returns:** void (updates DOM)
- **Dependencies:** `getVacationOptimizationTips()`
- **Side Effects:** Updates `cachedVacationTips`, renders to DOM

**Function:** `getVacationOptimizationTips()`

- **Location:** `v2/pages/tools_urlaubsanspruchrechner.php:2450`
- **Purpose:** Generate personalized vacation tips
- **Parameters:** None (uses component state)
- **Returns:** Array of tip objects
- **Dependencies:** Multiple tip generation functions
- **Side Effects:** None

## Formulas & Calculations

### Primary Formulas

**Base Vacation Days (Daily):**

```
baseVacationDays = (workDaysPerWeek / 6) * 24
```

**Base Vacation Days (Hourly):**

```
legalVacationHours = 144 hours (24 days * 6 hours)
baseVacationHours = (weeklyHours / 36) * legalVacationHours
baseVacationDays = baseVacationHours / dailyHours
```

**Pro-rating Formula:**

```
fullMonthsInYear = calculateFullMonthsInYear(startDate, endDate, year)
proratedVacationDays = (baseVacationDays / 12) * fullMonthsInYear
```

**Final Vacation (with Rounding):**

```
finalVacationDays = Math.max(legalVacationDays, contractVacationDays)
If finalVacationDays < 0.5:
  finalVacationResult = 0
Else:
  finalVacationResult = Math.ceil(finalVacationDays) // Round UP
```

### Legal Basis

- **BUrlG (Bundesurlaubsgesetz):** German Federal Vacation Act
- **BUrlG § 3:** Minimum vacation entitlement (24 days for 6-day week)
- **BUrlG § 4:** Full vacation entitlement after 6 months
- **BUrlG § 5:** Pro-rated vacation for partial year employment
- **BUrlG § 5 Abs. 2:** Rounding rule (round UP if ≥ 0.5 days)
- **JArbSchG:** Youth employment vacation (different base days)
- **SGB IX:** Disabled employee additional vacation (+5 days)
- **2021 Law Change:** Hourly calculation introduced

### Step-by-Step Calculation Example

**Input:**

- Start Date: 2026-01-15
- End Date: 2026-12-31
- Year: 2026
- Workdays: 5 Tage
- Calculation Type: Daily
- Disabled: No
- Youth: No
- Contract Days: 25

**Calculation:**

1. Base vacation:

   - Base Days: (5 / 6) \* 24 = 20 days

2. Employment period:

   - Employment Start: 2026-01-15
   - Employment End: 2026-12-31
   - Year Start: 2026-01-01
   - Year End: 2026-12-31
   - Actual Start: 2026-01-15
   - Actual End: 2026-12-31

3. Months calculation:

   - Start month (January): Starts on 15th → doesn't count as full month
   - Full months: February through December = 11 months
   - Total months: 11 months

4. 6-month waiting period:

   - Six months from start: 2026-07-15
   - Has completed six months: Yes (employment ends Dec 31)

5. Pro-rating:

   - Is first year: Yes
   - Has completed six months: Yes
   - Legal Vacation Days: 20 days (full entitlement)

6. Contract comparison:

   - Legal: 20 days
   - Contract: 25 days
   - Final: 25 days (contract higher)

7. Rounding:
   - Final: 25 days (already whole number)

**Output:**

- Legal Vacation Days: 20
- Contract Vacation Days: 25
- Final Vacation Days: 25
- Months Employed: 11
- Full Entitlement: Yes

## Export Functionality

**Export Types:**

- **PDF Export:** Full calculation report with BUrlG compliance information
- **CSV Export:** Calculation data in CSV format

**Email Gating:**

- **Basic Features:** No email required
- **Advanced Features:** Email required for PDF/CSV export
- **Email Collection:** HubSpot integration via `/v2/api/collect-lead.php`
- **Email Storage:** localStorage (`urlaubsanspruch_email_collected`, `urlaubsanspruch_email_address`)

**Export Content:**

- **PDF:** Includes employment period, calculation details, BUrlG compliance, results, vacation tips
- **CSV:** Includes calculation inputs and results

**Sharing:** Not implemented (no URL parameter sharing)

## Results & Insights

### Result Display

**Primary Results:**

- Final Vacation Days: Large number display
- Legal Vacation Days: Summary card
- Contract Vacation Days: Summary card (if applicable)
- Employment Period: Date range display
- Months Employed: Number display

**Detailed Breakdown:**

- Calculation steps explanation
- BUrlG compliance information
- Pro-rating explanation
- Warnings (if applicable)

**Vacation Optimization Tips:**

- Personalized analysis based on vacation days
- Employment-specific tips
- Holiday optimization tips
- Strategic planning tips
- Bridge day opportunities

**Result Formatting:**

- Numbers: Formatted with German locale
- Dates: Formatted as German dates (DD.MM.YYYY)
- Days: Rounded up according to BUrlG § 5 Abs. 2

## Browser Testing Results

### Desktop Browsers

**Chrome (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Firefox (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Safari (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Edge (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

### Mobile Testing

**iOS Safari:**

- Status: ✅ Functional
- Device: iPhone (tested)
- Issues: Minor UI adjustments on small screens
- Notes: Responsive design works well, slider works on mobile

**Android Chrome:**

- Status: ✅ Functional
- Device: Android (tested)
- Issues: None
- Notes: Touch interactions work correctly

**Mobile UI Differences:**

- Form sections stack vertically on mobile
- Result cards stack vertically on small screens
- Slider touch-friendly on mobile
- Date pickers use native mobile pickers

### Responsive Design

**Desktop (>1024px):**

- Layout: Multi-column form grid
- Results: Multi-column summary cards

**Tablet (768px-1024px):**

- Layout: Two-column form grid
- Results: Two-column summary cards

**Mobile (<768px):**

- Layout: Single-column form
- Results: Single-column cards

## Code Analysis

### Key Functions Location

- Main component: `v2/pages/tools_urlaubsanspruchrechner.php:796`
- Calculation function: `v2/pages/tools_urlaubsanspruchrechner.php:1332`
- Months calculation: `v2/pages/tools_urlaubsanspruchrechner.php:1559`
- Pro-rating calculation: `v2/pages/tools_urlaubsanspruchrechner.php:1598`
- Export functions: `v2/pages/tools_urlaubsanspruchrechner.php:1785+`
- Tips generation: `v2/pages/tools_urlaubsanspruchrechner.php:2450+`

### Constants Location

- Legal base days: `v2/pages/tools_urlaubsanspruchrechner.php:832`
- Default values: Embedded in component data (line 804+)
- Youth vacation days: Embedded in calculation logic (line 1375+)

## Content Documentation

### Hero Section

- **H1:** "Urlaubsanspruch-Rechner 2026: Kündigung & Minijob" (✅ Already "2026")
- **Description:** "Urlaubsanspruch-Rechner: Berechne gesetzlichen Urlaub bei Kündigung, Teilzeit & Minijob. BUrlG-konform, kostenlos & rechtssicher."

### Educational Content Sections

1. **BUrlG Basics**

   - Legal minimums explained
   - 5-day vs. 6-day week explained
   - Pro-rating rules explained

2. **Special Cases**
   - Termination scenarios explained
   - Part-time employment explained
   - Youth employment explained
   - Disabled employees explained

### FAQ Section

- **Total FAQs:** 15 sichtbare `<details>`-Einträge mit `id="faq-1"` … `faq-15`; **FAQPage** `mainEntity` mit gleicher Anzahl und abgestimmtem Antworttext (u. a. Stunden vs. Arbeitstage, 4-Tage-Woche).
- **FAQ Topics:** Berechnung & Resturlaub, Verfall/Krankheit, Kündigung/Probezeit/Auszahlung, Minijob/Teilzeit/Arbeitstage-Logik, Urlaubsjahr, Sonderfälle (Beamte, Beschäftigungsverbot), Ordio-Integration.

### Meta Tags

- **Title:** `Urlaubsanspruch-Rechner 2026: berechnen nach BUrlG | Resturlaub, Teilzeit & Minijob | Ordio`
- **Description:** `Urlaubsanspruch-Rechner 2026: gesetzlichen Urlaub nach BUrlG berechnen – Resturlaub, Teilzeit, Minijob, Kündigung & Probezeit. Kostenlos, mit PDF/CSV-Export. Keine Rechtsberatung.`
- **Keywords:** Urlaubsanspruch Rechner, berechnen, Resturlaub, BUrlG, Teilzeit, Minijob, Kündigung, Probezeit, anteilig, Werktage/Arbeitstage (siehe Seiten-`<meta name="keywords">`)

### Schema Markup

- **WebApplication schema:** Ja (ohne `aggregateRating`; `screenshot` = tool-spezifisches OG-WebP)
- **HowTo schema:** Ja (`#howto` = sichtbare 4 Schritte im Ratgeber)
- **FAQPage schema:** Ja (15 Fragen, Texte an UI angeglichen)
- **Calculator schema:** Ja
- **BreadcrumbList schema:** Ja

## 2026 Update Requirements

### Immediate Updates (Required for Jan 1, 2026)

**Constants/Values:**

- ✅ Default Start Date: Updated to "2026-01-01"
- ✅ Legal minimums: Verify unchanged (BUrlG stable)
- ✅ Year: Already defaults to current year (2026)

**Content:**

- ✅ H1: Already "2026"
- ✅ Meta tags: Already "2026"
- ✅ FAQs: Review for accuracy (~15 FAQs)

**Priority:** 🟡 MEDIUM (Default date needs update, otherwise mostly accurate)

### Throughout 2026 Updates

**Scheduled Updates:**

- None scheduled (BUrlG stable, no changes expected)

### Monitoring Requirements

- **BUrlG Changes:** Monitor for legal changes (rare)
- **2021 Law:** Hourly calculation already implemented
- **Frequency:** Annually (January) or when legal changes occur

## Testing

### Test Cases

**Normal Cases:**

- Test 1: Full year employment, 5-day week → Expected: 20 days
- Test 2: Partial year (6 months), 5-day week → Expected: 10 days pro-rated
- Test 3: Termination scenario → Expected: Pro-rated calculation
- Test 4: Contract vacation (25 days) → Expected: 25 days (contract higher)

**Edge Cases:**

- Edge case 1: Less than 6 months → Expected: Warning, pro-rated
- Edge case 2: Youth employment (age 15) → Expected: 30 days
- Edge case 3: Disabled employee → Expected: +5 days
- Edge case 4: Hourly calculation → Expected: Correct hourly conversion
- Edge case 5: Employment ending in first half → Expected: Pro-rated
- Edge case 6: Contract override → Expected: Higher value applies

### Browser Testing

- Chrome: ✅ Tested, working
- Firefox: ✅ Tested, working
- Safari: ✅ Tested, working
- Mobile: ✅ Tested, working

### Export Testing

- PDF: ✅ Tested, working (email gating)
- CSV: ✅ Tested, working (email gating)

## Maintenance Notes

### Known Issues

- Default start date updated to "2026"
- Inline JavaScript makes updates more difficult (consider extraction)
- Complex calculation logic (well-documented but could be modularized)

### Future Improvements

- Extract JavaScript to separate file for better maintainability
- Add URL parameter sharing for results
- Add comparison mode (before/after scenarios)
- Add vacation calendar visualization

### Related Tools

**Complementary Tools:**

- **[Arbeitstage-Rechner](arbeitstage-rechner-documentation.md)** - Calculate working days in a period

  - Use together when: Need to calculate vacation entitlement based on working days
  - Example workflow: Calculate working days → Calculate vacation entitlement → Plan vacation

- **[Arbeitszeitrechner](arbeitszeitrechner-documentation.md)** - Calculate working hours and compliance

  - Use together when: Need to verify working hours for vacation entitlement calculation
  - Example workflow: Calculate working hours → Calculate vacation entitlement → Ensure compliance

- **[Minijob-Rechner](minijob-rechner-documentation.md)** - Calculate Minijob net salary

  - Use together when: Calculating vacation for Minijob workers
  - Example workflow: Calculate Minijob salary → Calculate vacation entitlement → Plan vacation

- **[Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md)** - Calculate net salary
  - Use together when: Calculating vacation payout at termination
  - Example workflow: Calculate vacation entitlement → Calculate payout amount → Process payment

**Sequential Tools:**

- **[Lohnabrechnung Feature](../../content/product-features/lohnabrechnung-documentation.md)** - Payroll processing
  - Use after: Calculating vacation entitlement
  - Use before: Processing payroll with vacation days

## References

### Official Sources

- **BUrlG (Bundesurlaubsgesetz):** Official German Federal Vacation Act
- **JArbSchG:** Youth employment regulations
- **SGB IX:** Disabled employee regulations

### Documentation Files

- `BROWSER_TESTING_FRAMEWORK.md`: Browser testing guidelines
- `CODE_ANALYSIS_FRAMEWORK.md`: Code analysis guidelines
- `TOOL_DOCUMENTATION_TEMPLATE.md`: Documentation template
