vault backup: 2026-03-07 11:51:57

This commit is contained in:
Vincent Verbruggen
2026-03-07 11:51:57 +01:00
parent 520c592bbd
commit 59d2fe286f
5 changed files with 862 additions and 197 deletions

View File

@@ -0,0 +1,259 @@
# Bathroom - Codex recommendations
> Created: 2026-03-07
> Purpose: Separate scratch note with Codex recommendations, inspiration directions, and source links.
---
## Context
This note is separate from `Bathroom.md`.
It is based on:
- ![[Bathroom Blueprint.svg]]
- The current draft layout shown there
- Current bath design and technical guidance reviewed on 2026-03-07
---
## My Read of the Room
- The footprint is compact but not tiny: about `4.9 m2`.
- The stepped top-right corner is useful, not awkward. It gives you a natural shower zone.
- The outward-opening door is good because it preserves usable floor area.
- The room can probably support `bath + shower + toilet + vanity`, but only if you are disciplined about fixture sizes and storage.
- The largest unresolved planning item is still the toilet position. That decision drives plumbing complexity, clearances, and whether the bath remains worth keeping.
---
## My Strongest Recommendations
### 1. Keep the shower in the existing nook
- The `~1000 x 1000` shower nook is one of the best things about this layout.
- It already creates a wet zone without needing a complicated enclosure.
- If you want a cleaner look, use a fixed glass panel or very minimal enclosure rather than a visually heavy shower cabin.
### 2. Decide whether the bathtub is truly essential
- If the bathtub is a real use case, keep it and make it deliberate.
- If the bathtub is mostly hypothetical, removing it is probably the single biggest upgrade to practicality.
- A tub removal would likely buy you some combination of:
- easier toilet placement
- larger vanity
- better circulation
- calmer sightlines
- more useful storage
### 3. Use a wall-hung vanity with drawers
- In a room this size, drawers are materially better than doors.
- A wall-hung vanity keeps more floor visible and makes cleaning easier.
- If possible, pair it with a mirrored cabinet rather than only a flat mirror.
### 4. Keep the finish palette calm
- This room will benefit more from visual calm than from lots of feature moments.
- Use fewer finish changes than your first instinct suggests.
- Aim for:
- one main tile family
- one vanity material
- one metal finish
- one restrained accent color
### 5. Spend money on invisible performance before visible styling
- Prioritize ventilation, waterproofing, drainage, lighting, and storage planning before decorative upgrades.
- Bathrooms punish bad hidden decisions much harder than most other rooms.
---
## Design Directions I Think Fit This Room
### Warm spa
- Large-format matte porcelain in warm off-white, sand, or light taupe
- Oak or walnut vanity
- Brushed nickel or stainless taps
- Soft integrated mirror lighting
- Sage or clay accents
Why it fits:
- Works well in a compact room
- Feels calm rather than cold
- Ages better than trend-heavy contrast schemes
### Quiet hotel
- Seamless floor-to-wall tile palette
- Floating vanity
- Frameless or near-frameless shower glass
- Recessed niche
- Very low-contrast grout
Why it fits:
- Makes the room feel larger
- Gives the bath and shower a more intentional feel
- Works especially well if you want the room to feel expensive without adding visual noise
### Vintage modern
- More character in the floor tile
- Vanity with more furniture presence
- Framed mirror
- Decorative sconces or warmer vanity lighting
- Brushed brass or aged metal accents
Why it fits:
- Good if you want something less generic
- Pairs well with older building character
- Needs discipline so it does not become busy
---
## What I Would Probably Do
If the bathtub must stay:
- Keep the shower in the nook
- Keep the outward-opening door
- Use a compact wall-hung vanity with drawers
- Use a mirrored cabinet
- Reassess the radiator position early
- Use large matte tile and keep the palette light and warm
If the bathtub is optional:
- Remove the tub
- Keep and improve the shower zone
- Spend the gained flexibility on toilet placement, vanity width, and storage
- Consider underfloor heating plus a smaller towel radiator instead of letting the radiator dictate the plan
---
## Things To Lock Before You Shop
- Toilet position
- Existing drain and supply locations
- Whether the bath stays
- Radiator strategy
- Vanity width and depth
- Door clearance around all fixtures
- Fan position and duct route
- Lighting layout
- Whether the shower will be curbed, low-threshold, or fully curbless
Do not buy taps, mirrors, or tile before those decisions are stable.
---
## Practical Guidance I Would Follow
### Ventilation
- For bathrooms up to `100 sq ft`, Home Ventilating Institute guidance is `1 CFM per sq ft`, with a minimum of `50 CFM`.
- Your draft room is about `53 sq ft`, so the baseline is roughly `53 CFM`.
- In practice, I would treat that as a floor, not a target. Long duct runs, bends, and quiet operation requirements usually justify going above the minimum.
- A humidity sensor and run-on timer are worth it.
### Flooring and slip resistance
- Do not pick polished floor tile for this room.
- Confirm the manufacturer classifies the tile for `Interior, Wet (IW)` use under `ANSI A326.3`.
- For the shower floor, be even more conservative.
### Waterproofing
- Treat the shower waterproofing system as a system, not as a pile of compatible-looking parts.
- Keep it simple enough that the installer cannot improvise critical details.
- Flood-test the shower before tile goes in.
### Lighting
- Use layered lighting:
- general ceiling light
- mirror task lighting
- shower light if needed
- optional low-level night lighting
- A backlit mirror looks good, but it should not be the only useful light at the vanity.
### Storage
- Plan storage for boring items, not aspirational styling:
- toilet paper
- spare toiletries
- cleaning supplies
- hair tools
- medicine
- laundry overflow
- Recessed shower niches are usually worth it if planned early.
---
## Common Failure Modes
- Keeping the tub by default and regretting the loss of space every day
- Choosing floor tile for appearance first and wet performance second
- Treating the fan as a checkbox instead of a real moisture-control system
- Buying a flat mirror when a mirrored cabinet would solve actual storage pressure
- Letting the radiator location stay unchallenged
- Overusing feature tiles, contrasting grout, and multiple finishes in a compact footprint
- Solving aesthetics before plumbing reality
---
## Current Design Signals Worth Paying Attention To
- `Houzz 2025 Bathroom Trends` reports wet rooms at `16%` of renovated bathrooms, with half of those homeowners saying the choice helped them use space better.
- The same Houzz study says `36%` of renovated bathrooms include wellness-oriented features, led by upgraded lighting at `30%`.
- `NKBA 2026 Bath Trends` points toward light neutrals, large-format flooring, wood-faced vanities, matte or brushed faucet finishes, larger showers, and layered lighting.
- Houzz search data in 2025 also points toward more interest in white oak bathroom vanities, vintage bathroom vanities, and warm metal accents.
My interpretation:
- The safe center of the market is moving warmer, calmer, and more natural.
- That aligns well with your room.
- I would avoid cold gray, polished chrome everywhere, and busy patterned surfaces unless you want a more stylized result on purpose.
---
## Source List
### Technical and planning
- Home Ventilating Institute: bathroom ventilation sizing
- https://www.hvi.org/resources/publications/bathroom-ventilation/
- Home Ventilating Institute: certified products directory
- https://www.hvi.org/hvi-certified-products-directory/
- Tile Council of North America: `ANSI A326.3` product use classifications
- https://tcnatile.com/national-standard-ansi-a326-3-now-requires-hard-surface-flooring-manufacturers-to-provide-product-use-classifications-based-on-their-slip-resistance-properties/
- Schluter: shower system installation guidance and water testing reference
- https://www.schluter.com/schluter-us/en_US/kerdi-shower-kit-installation-instructions
- Schluter: shower system installation handbook PDF
- https://assets.schluter.com/asset/570120892212/document_i2tt9fh4sp2n562jmirhppbv4o/Shower%20System%20Installation%20Handbook.pdf
### Trend and inspiration
- Houzz: 2025 U.S. Bathroom Trends Study
- https://www.houzz.com/magazine/2025-u-s-houzz-bathroom-trends-study-stsetivw-vs~183227801
- NKBA: 2026 Bath Trends Report announcement
- https://nkba.org/press/nkba-kbis-releases-annual-2026-bath-trends-report/
- NKBA: 2026 Bath Trends Report overview
- https://kb.nkba.org/research/nkba-kbis-2026-bath-trends-report/
- Houzz: 2025 emerging summer trends report
- https://blog.houzz.com/2025-u-s-houzz-emerging-summer-trends-report/
---
## Use This Note For
- Deciding whether the bathtub stays
- Narrowing the aesthetic direction
- Building a shortlist for tile, vanity, lighting, and ventilation
- Sanity-checking contractor proposals
Do not use this note as a substitute for verifying actual plumbing constraints, local electrical rules, waterproofing details, or fixture dimensions.

View File

@@ -0,0 +1,245 @@
<!-- W: 2500 + 500 each side -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3500 3600" width="800" height="820"
font-family="monospace" font-size="48">
<!-- Background -->
<rect width="3500" height="3600" fill="#f8f8f8" />
<!-- Title -->
<!-- Room in mm. Visual: A at top, F/E (origin) at bottom-left.
SVG coords = (arch_x, 2600 - arch_y) so Y-up maps to SVG Y-down.
Polygon (SVG): A(0,0) B(2500,0) C(2500,1000) D(1500,1000) E(1500,2600) F(0,2600)
Arch coords: A(0,2600) B(2500,2600) C(2500,1600) D(1500,1600) E(1500,0) F(0,0)
-->
<!-- Make y be upwards increasing and add 500 padding -->
<g transform="translate(500, 3000) scale(1,-1)">
<!-- Fix text orientation -->
<g transform="translate(1250, 2850) scale(1,-1)">
<text text-anchor="middle" font-size="80" font-weight="bold"
fill="#333">Bathroom Blueprint (Future)</text>
</g>
<!-- Room outline — wall E split into solid (550mm wall) + dashed (door) -->
<!-- F(0,0) E(1500,0) D(1500,1600) C(2500,1600) B(2500,2600) A(0,2600) -->
<!-- Fill only -->
<polygon
points="0,0 0,2600 2500,2600 2500,1600 1500,1600 1500,0"
fill="white" stroke="none" />
<!-- All walls except E as solid path -->
<path d="M 0,0 L 0,2600 L 2500,2600 L 2500,1600 L 1500,1600 L 1500,0"
fill="none" stroke="#333" stroke-width="16" stroke-linejoin="miter" />
<!-- Wall E: solid 550mm wall segment -->
<line x1="0" y1="0" x2="550" y2="0" stroke="#333" stroke-width="16" />
<!-- Wall E: dashed door opening -->
<line x1="550" y1="0" x2="1500" y2="0" stroke="#333" stroke-width="16" stroke-dasharray="40,25" />
<!-- ========== DIMENSIONS ========== -->
<!-- Pattern: line at ±60 from wall, ticks ±25, text at ±120 flipped -->
<!-- Wall E: y=0, 1500mm -->
<line x1="0" y1="calc(0 - 60)" x2="1500" y2="calc(0 - 60)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(0 - 60 - 25)" x2="0" y2="calc(0 - 60 + 25)" stroke="#555" stroke-width="4" />
<line x1="1500" y1="calc(0 - 60 - 25)" x2="1500" y2="calc(0 - 60 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(750, -120) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">E: 1500mm</text>
</g>
<!-- Wall A: y=2600, 2500mm -->
<line x1="0" y1="calc(2600 + 60)" x2="2500" y2="calc(2600 + 60)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(2600 + 60 - 25)" x2="0" y2="calc(2600 + 60 + 25)" stroke="#555"
stroke-width="4" />
<line x1="2500" y1="calc(2600 + 60 - 25)" x2="2500" y2="calc(2600 + 60 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(1250, 2720) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">A: 2500mm</text>
</g>
<!-- Wall F: x=0, 2600mm -->
<line x1="calc(0 - 60)" y1="0" x2="calc(0 - 60)" y2="2600" stroke="#555" stroke-width="4" />
<line x1="calc(0 - 60 - 25)" y1="0" x2="calc(0 - 60 + 25)" y2="0" stroke="#555" stroke-width="4" />
<line x1="calc(0 - 60 - 25)" y1="2600" x2="calc(0 - 60 + 25)" y2="2600" stroke="#555"
stroke-width="4" />
<g transform="translate(-120, 1300) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(90)">F: 2600mm</text>
</g>
<!-- Wall B: x=2500, 1000mm (y=1600 to y=2600) -->
<line x1="calc(2500 + 60)" y1="1600" x2="calc(2500 + 60)" y2="2600" stroke="#555"
stroke-width="4" />
<line x1="calc(2500 + 60 - 25)" y1="1600" x2="calc(2500 + 60 + 25)" y2="1600" stroke="#555"
stroke-width="4" />
<line x1="calc(2500 + 60 - 25)" y1="2600" x2="calc(2500 + 60 + 25)" y2="2600" stroke="#555"
stroke-width="4" />
<g transform="translate(2620, 2100) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(-90)">B: 1000mm</text>
</g>
<!-- Wall C: y=1600, 1000mm (x=1500 to x=2500) -->
<line x1="1500" y1="calc(1600 - 60)" x2="2500" y2="calc(1600 - 60)" stroke="#555"
stroke-width="4" />
<line x1="1500" y1="calc(1600 - 60 - 25)" x2="1500" y2="calc(1600 - 60 + 25)" stroke="#555"
stroke-width="4" />
<line x1="2500" y1="calc(1600 - 60 - 25)" x2="2500" y2="calc(1600 - 60 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(2000, 1480) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">C: 1000mm</text>
</g>
<!-- Wall D: x=1500, 1600mm (y=0 to y=1600) -->
<line x1="calc(1500 + 60)" y1="0" x2="calc(1500 + 60)" y2="1600" stroke="#555" stroke-width="4" />
<line x1="calc(1500 + 60 - 25)" y1="0" x2="calc(1500 + 60 + 25)" y2="0" stroke="#555"
stroke-width="4" />
<line x1="calc(1500 + 60 - 25)" y1="1600" x2="calc(1500 + 60 + 25)" y2="1600" stroke="#555"
stroke-width="4" />
<g transform="translate(1620, 800) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(-90)">D: 1600mm</text>
</g>
<!-- ========== FIXTURES (PLANNED) ========== -->
<!-- Bath: freestanding corner bath 1800x800, corner A/F, 25mm gap from walls -->
<rect x="25" y="800" width="775" height="1775" rx="60" fill="none" stroke="#333"
stroke-width="10" />
<rect x="75" y="850" width="675" height="1675" rx="50" fill="#d4e8f7" fill-opacity="0.3"
stroke="#999" stroke-width="5" />
<!-- Faucet: middle of bath, wall F side -->
<circle cx="40" cy="1700" r="30" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="40" cy="1700" r="10" fill="#4a90d9" />
<!-- Drain -->
<circle cx="400" cy="925" r="25" fill="none" stroke="#999" stroke-width="5" />
<g transform="translate(400, 1700) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Bath</text>
</g>
<g transform="translate(400, 1645) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#666">1800x800</text>
</g>
<!-- Shower: nook, x=1500-2500, y=1600-2600 -->
<rect x="1500" y="1600" width="1000" height="1000" fill="#d4e8f7" fill-opacity="0.4"
stroke="#333" stroke-width="10" stroke-dasharray="30,15" />
<!-- Shower head: middle of wall B -->
<circle cx="2475" cy="2100" r="60" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="2475" cy="2100" r="20" fill="#4a90d9" />
<!-- Drain -->
<circle cx="2000" cy="2100" r="35" fill="none" stroke="#999" stroke-width="5" />
<line x1="1980" y1="2100" x2="2020" y2="2100" stroke="#999" stroke-width="5" />
<line x1="2000" y1="2080" x2="2000" y2="2120" stroke="#999" stroke-width="5" />
<g transform="translate(2000, 2200) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#4a90d9">Shower</text>
</g>
<g transform="translate(2000, 2140) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#4a90d9">
(~1000x1000)</text>
</g>
<!-- Sink: wall F, y=150 to y=600 (between origin and bath), depth 500mm -->
<rect x="25" y="150" width="500" height="450" rx="15" fill="none" stroke="#333"
stroke-width="10" />
<ellipse cx="275" cy="375" rx="90" ry="130" fill="none" stroke="#333" stroke-width="7" />
<!-- Faucet -->
<circle cx="100" cy="375" r="18" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="100" cy="375" r="6" fill="#4a90d9" />
<g transform="translate(275, 375) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Sink</text>
</g>
<!-- Shelf: wall A, 800mm long, 250mm deep, 500mm from wall F -->
<rect x="500" y="calc(2600 - 250)" width="800" height="250" fill="#c8b896" fill-opacity="0.3"
stroke="#999" stroke-width="5" />
<g transform="translate(900, 2475) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#666">Shelf 800x250</text>
</g>
<!-- Ceiling light: 1100 from wall F, 700 from wall A → (1100, 2600-700) = (1100, 1900), r=210 -->
<circle cx="1100" cy="1900" r="210" fill="none" stroke="#f5a623" stroke-width="6"/>
<line x1="1070" y1="1900" x2="1130" y2="1900" stroke="#f5a623" stroke-width="4"/>
<line x1="1100" y1="1870" x2="1100" y2="1930" stroke="#f5a623" stroke-width="4"/>
<g transform="translate(1100, 1830) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#f5a623">Light (420mm)</text>
</g>
<!-- Vent: on wall D, centered on radiator (y=900) -->
<rect x="1400" y="850" width="100" height="100" fill="none" stroke="#888" stroke-width="5" stroke-dasharray="15,8"/>
<line x1="1400" y1="850" x2="1500" y2="950" stroke="#888" stroke-width="3"/>
<line x1="1500" y1="850" x2="1400" y2="950" stroke="#888" stroke-width="3"/>
<g transform="translate(1350, 900) scale(1,-1)">
<text text-anchor="end" dominant-baseline="central" font-size="35" fill="#888">Vent</text>
</g>
<!-- Radiator: wall D (x=1500), 600mm, 600mm from door -->
<rect x="1425" y="600" width="75" height="600" fill="#e85d3a" fill-opacity="0.4"
stroke="#e85d3a" stroke-width="7" />
<!-- Dimension: 600mm gap radiator to door on wall D -->
<line x1="calc(1500 + 120)" y1="0" x2="calc(1500 + 120)" y2="600" stroke="#555" stroke-width="4" />
<line x1="calc(1500 + 120 - 25)" y1="0" x2="calc(1500 + 120 + 25)" y2="0" stroke="#555"
stroke-width="4" />
<line x1="calc(1500 + 120 - 25)" y1="600" x2="calc(1500 + 120 + 25)" y2="600" stroke="#555"
stroke-width="4" />
<g transform="translate(1680, 300) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555"
transform="rotate(-90)">600</text>
</g>
<!-- Dimension: 550mm wall segment left of door -->
<line x1="0" y1="calc(0 - 150)" x2="550" y2="calc(0 - 150)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(0 - 150 - 25)" x2="0" y2="calc(0 - 150 + 25)" stroke="#555"
stroke-width="4" />
<line x1="550" y1="calc(0 - 150 - 25)" x2="550" y2="calc(0 - 150 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(275, -210) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555">550</text>
</g>
<!-- Scale bar -->
<line x1="1700" y1="-200" x2="2700" y2="-200" stroke="#333" stroke-width="8" />
<line x1="1700" y1="calc(-200 - 25)" x2="1700" y2="calc(-200 + 25)" stroke="#333"
stroke-width="8" />
<line x1="2200" y1="calc(-200 - 15)" x2="2200" y2="calc(-200 + 15)" stroke="#333"
stroke-width="5" />
<line x1="2700" y1="calc(-200 - 25)" x2="2700" y2="calc(-200 + 25)" stroke="#333"
stroke-width="8" />
<g transform="translate(1700, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">0</text>
</g>
<g transform="translate(2200, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">500</text>
</g>
<g transform="translate(2700, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">1000mm</text>
</g>
</g>
<!-- Legend (outside the flipped group, normal SVG coords) -->
<g transform="translate(2650, 2400)">
<text x="0" y="0" font-size="50" font-weight="bold" fill="#333">Legend</text>
<line x1="0" y1="60" x2="80" y2="60" stroke="#333" stroke-width="14" />
<text x="100" y="75" font-size="40" fill="#555">Wall</text>
<line x1="0" y1="120" x2="80" y2="120" stroke="#333" stroke-width="8" stroke-dasharray="20,10" />
<text x="100" y="135" font-size="40" fill="#555">Shower</text>
<circle cx="40" cy="180" r="18" fill="#4a90d9" />
<text x="100" y="195" font-size="40" fill="#555">Water</text>
<rect x="0" y="225" width="80" height="40" fill="#e85d3a" fill-opacity="0.4" stroke="#e85d3a"
stroke-width="4" />
<text x="100" y="255" font-size="40" fill="#555">Radiator</text>
<line x1="0" y1="300" x2="80" y2="300" stroke="#333" stroke-width="14" stroke-dasharray="20,12" />
<text x="100" y="315" font-size="40" fill="#555">Door</text>
<circle cx="40" cy="360" r="18" fill="none" stroke="#f5a623" stroke-width="4" />
<text x="100" y="375" font-size="40" fill="#555">Light</text>
<rect x="15" y="405" width="50" height="50" fill="none" stroke="#888" stroke-width="3" stroke-dasharray="8,5" />
<line x1="15" y1="405" x2="65" y2="455" stroke="#888" stroke-width="2" />
<line x1="65" y1="405" x2="15" y2="455" stroke="#888" stroke-width="2" />
<text x="100" y="440" font-size="40" fill="#555">Vent</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -19,43 +19,237 @@
<!-- Fix text orientation -->
<g transform="translate(1250, 2850) scale(1,-1)">
<text text-anchor="middle" font-size="80" font-weight="bold"
fill="#333">Bathroom
Blueprint</text>
fill="#333">Bathroom Blueprint (Current)</text>
</g>
<!-- Room outline -->
<!-- Room outline — wall E split into solid (550mm wall) + dashed (door) -->
<!-- F(0,0) E(1500,0) D(1500,1600) C(2500,1600) B(2500,2600) A(0,2600) -->
<!-- Fill only -->
<polygon
points="0,0 0,2600 2500,2600 2500,1500 1500,1500 1500,0"
fill=" white" stroke=" #333" stroke-width=" 16" stroke-linejoin=" miter" />
points="0,0 0,2600 2500,2600 2500,1600 1500,1600 1500,0"
fill="white" stroke="none" />
<!-- All walls except E as solid path -->
<path d="M 0,0 L 0,2600 L 2500,2600 L 2500,1600 L 1500,1600 L 1500,0"
fill="none" stroke="#333" stroke-width="16" stroke-linejoin="miter" />
<!-- Wall E: solid 550mm wall segment -->
<line x1="0" y1="0" x2="550" y2="0" stroke="#333" stroke-width="16" />
<!-- Wall E: dashed door opening -->
<line x1="550" y1="0" x2="1500" y2="0" stroke="#333" stroke-width="16" stroke-dasharray="40,25" />
<!-- Default line padding 60 -->
<!-- ========== DIMENSIONS ========== -->
<!-- Pattern: line at ±60 from wall, ticks ±25, text at ±120 flipped -->
<!-- Wall E: y=0, 1500mm -->
<line x1="0" y1="calc(0 - 60)" x2="1500" y2="calc(0 - 60)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(0 - 60 - 25)" x2="0" y2="calc(0 - 60 - 25 + 50)" stroke="#555"
<line x1="0" y1="calc(0 - 60 - 25)" x2="0" y2="calc(0 - 60 + 25)" stroke="#555" stroke-width="4" />
<line x1="1500" y1="calc(0 - 60 - 25)" x2="1500" y2="calc(0 - 60 + 25)" stroke="#555"
stroke-width="4" />
<line x1="1500" y1="calc(0 - 60 - 25)" x2="1500" y2="calc(0 - 60 - 25 + 50)" stroke="#555"
stroke-width="4" />
<!-- Move in our coordinate then flip for text readable -->
<!-- text half way and on y - 120 -->
<g transform="translate(750, -120) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">
1500</text>
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">E: 1500mm</text>
</g>
<!-- Wall A: y=2600, 2500mm -->
<line x1="0" y1="calc(2600 + 60)" x2="2500" y2="calc(2600 + 60)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(2600 + 60 - 25)" x2="0" y2="calc(2600 + 60 - 25 + 50)" stroke="#555"
<line x1="0" y1="calc(2600 + 60 - 25)" x2="0" y2="calc(2600 + 60 + 25)" stroke="#555"
stroke-width="4" />
<line x1="2500" y1="calc(2600 + 60 - 25)" x2="2500" y2="calc(2600 + 60 - 25 + 50)" stroke="#555"
<line x1="2500" y1="calc(2600 + 60 - 25)" x2="2500" y2="calc(2600 + 60 + 25)" stroke="#555"
stroke-width="4" />
<!-- Move in our coordinate then flip for text readable -->
<!-- text half way and on y + 120 -->
<g transform="translate(1250, 2720) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">
2500</text>
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">A: 2500mm</text>
</g>
<!-- Wall F: x=0, 2600mm -->
<line x1="calc(0 - 60)" y1="0" x2="calc(0 - 60)" y2="2600" stroke="#555" stroke-width="4" />
<line x1="calc(0 - 60 - 25)" y1="0" x2="calc(0 - 60 + 25)" y2="0" stroke="#555" stroke-width="4" />
<line x1="calc(0 - 60 - 25)" y1="2600" x2="calc(0 - 60 + 25)" y2="2600" stroke="#555"
stroke-width="4" />
<g transform="translate(-120, 1300) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(90)">F: 2600mm</text>
</g>
<!-- Wall B: x=2500, 1000mm (y=1600 to y=2600) -->
<line x1="calc(2500 + 60)" y1="1600" x2="calc(2500 + 60)" y2="2600" stroke="#555"
stroke-width="4" />
<line x1="calc(2500 + 60 - 25)" y1="1600" x2="calc(2500 + 60 + 25)" y2="1600" stroke="#555"
stroke-width="4" />
<line x1="calc(2500 + 60 - 25)" y1="2600" x2="calc(2500 + 60 + 25)" y2="2600" stroke="#555"
stroke-width="4" />
<g transform="translate(2620, 2100) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(-90)">B: 1000mm</text>
</g>
<!-- Wall C: y=1600, 1000mm (x=1500 to x=2500) -->
<line x1="1500" y1="calc(1600 - 60)" x2="2500" y2="calc(1600 - 60)" stroke="#555"
stroke-width="4" />
<line x1="1500" y1="calc(1600 - 60 - 25)" x2="1500" y2="calc(1600 - 60 + 25)" stroke="#555"
stroke-width="4" />
<line x1="2500" y1="calc(1600 - 60 - 25)" x2="2500" y2="calc(1600 - 60 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(2000, 1480) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555">C: 1000mm</text>
</g>
<!-- Wall D: x=1500, 1600mm (y=0 to y=1600) -->
<line x1="calc(1500 + 60)" y1="0" x2="calc(1500 + 60)" y2="1600" stroke="#555" stroke-width="4" />
<line x1="calc(1500 + 60 - 25)" y1="0" x2="calc(1500 + 60 + 25)" y2="0" stroke="#555"
stroke-width="4" />
<line x1="calc(1500 + 60 - 25)" y1="1600" x2="calc(1500 + 60 + 25)" y2="1600" stroke="#555"
stroke-width="4" />
<g transform="translate(1620, 800) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="48" fill="#555"
transform="rotate(-90)">D: 1600mm</text>
</g>
<!-- ========== FIXTURES ========== -->
<!-- Bath: 1850x850, corner A/F, long side along wall F -->
<rect x="25" y="750" width="800" height="1825" rx="60" fill="none" stroke="#333"
stroke-width="10" />
<rect x="75" y="800" width="700" height="1725" rx="50" fill="#d4e8f7" fill-opacity="0.3"
stroke="#999" stroke-width="5" />
<!-- Faucet: middle of bath, wall F side -->
<circle cx="40" cy="1675" r="30" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="40" cy="1675" r="10" fill="#4a90d9" />
<!-- Drain -->
<circle cx="425" cy="875" r="25" fill="none" stroke="#999" stroke-width="5" />
<g transform="translate(425, 1675) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Bath</text>
</g>
<g transform="translate(425, 1620) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#666">1850x850</text>
</g>
<!-- Suction cup baskets: wall F, between sink and bath -->
<rect x="25" y="620" width="120" height="110" rx="8" fill="#aaa" fill-opacity="0.2"
stroke="#999" stroke-width="4" stroke-dasharray="10,6" />
<g transform="translate(200, 675) scale(1,-1)">
<text text-anchor="start" dominant-baseline="central" font-size="30" fill="#999">TISKEN baskets</text>
</g>
<!-- Shower: nook, x=1500-2500, y=1600-2600 -->
<rect x="1500" y="1600" width="1000" height="1000" fill="#d4e8f7" fill-opacity="0.4"
stroke="#333" stroke-width="10" stroke-dasharray="30,15" />
<!-- Shower head: middle of wall B -->
<circle cx="2475" cy="2100" r="60" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="2475" cy="2100" r="20" fill="#4a90d9" />
<!-- Drain -->
<circle cx="2000" cy="2100" r="35" fill="none" stroke="#999" stroke-width="5" />
<line x1="1980" y1="2100" x2="2020" y2="2100" stroke="#999" stroke-width="5" />
<line x1="2000" y1="2080" x2="2000" y2="2120" stroke="#999" stroke-width="5" />
<g transform="translate(2000, 2200) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#4a90d9">Shower</text>
</g>
<g transform="translate(2000, 2140) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#4a90d9">
(~1000x1000)</text>
</g>
<!-- Sink: 550x350, wall F, 50mm from wall E -->
<rect x="25" y="50" width="350" height="550" rx="15" fill="none" stroke="#333"
stroke-width="10" />
<ellipse cx="200" cy="325" rx="80" ry="140" fill="none" stroke="#333" stroke-width="7" />
<!-- Faucet -->
<circle cx="60" cy="325" r="18" fill="none" stroke="#4a90d9" stroke-width="7" />
<circle cx="60" cy="325" r="6" fill="#4a90d9" />
<g transform="translate(200, 325) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="45" fill="#666">Sink</text>
</g>
<g transform="translate(200, 270) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="32" fill="#666">550x350</text>
</g>
<!-- Shelf: wall A, 800mm long, 250mm deep, 500mm from wall F -->
<rect x="500" y="calc(2600 - 250)" width="800" height="250" fill="#c8b896" fill-opacity="0.3"
stroke="#999" stroke-width="5" />
<g transform="translate(900, 2475) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#666">Shelf 800x250</text>
</g>
<!-- Ceiling light: 1100 from wall F, 700 from wall A → (1100, 2600-700) = (1100, 1900), r=210 -->
<circle cx="1100" cy="1900" r="210" fill="none" stroke="#f5a623" stroke-width="6"/>
<line x1="1070" y1="1900" x2="1130" y2="1900" stroke="#f5a623" stroke-width="4"/>
<line x1="1100" y1="1870" x2="1100" y2="1930" stroke="#f5a623" stroke-width="4"/>
<g transform="translate(1100, 1830) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="35" fill="#f5a623">Light (420mm)</text>
</g>
<!-- Vent: on wall D, centered on radiator (y=900) -->
<rect x="1400" y="850" width="100" height="100" fill="none" stroke="#888" stroke-width="5" stroke-dasharray="15,8"/>
<line x1="1400" y1="850" x2="1500" y2="950" stroke="#888" stroke-width="3"/>
<line x1="1500" y1="850" x2="1400" y2="950" stroke="#888" stroke-width="3"/>
<g transform="translate(1350, 900) scale(1,-1)">
<text text-anchor="end" dominant-baseline="central" font-size="35" fill="#888">Vent</text>
</g>
<!-- Radiator: wall D (x=1500), 600mm, 600mm from door -->
<rect x="1425" y="600" width="75" height="600" fill="#e85d3a" fill-opacity="0.4"
stroke="#e85d3a" stroke-width="7" />
<!-- Dimension: 600mm gap radiator to door on wall D -->
<line x1="calc(1500 + 120)" y1="0" x2="calc(1500 + 120)" y2="600" stroke="#555" stroke-width="4" />
<line x1="calc(1500 + 120 - 25)" y1="0" x2="calc(1500 + 120 + 25)" y2="0" stroke="#555"
stroke-width="4" />
<line x1="calc(1500 + 120 - 25)" y1="600" x2="calc(1500 + 120 + 25)" y2="600" stroke="#555"
stroke-width="4" />
<g transform="translate(1680, 300) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555"
transform="rotate(-90)">600</text>
</g>
<!-- Dimension: 550mm wall segment left of door -->
<line x1="0" y1="calc(0 - 150)" x2="550" y2="calc(0 - 150)" stroke="#555" stroke-width="4" />
<line x1="0" y1="calc(0 - 150 - 25)" x2="0" y2="calc(0 - 150 + 25)" stroke="#555"
stroke-width="4" />
<line x1="550" y1="calc(0 - 150 - 25)" x2="550" y2="calc(0 - 150 + 25)" stroke="#555"
stroke-width="4" />
<g transform="translate(275, -210) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="42" fill="#555">550</text>
</g>
<!-- Scale bar -->
<line x1="1700" y1="-200" x2="2700" y2="-200" stroke="#333" stroke-width="8" />
<line x1="1700" y1="calc(-200 - 25)" x2="1700" y2="calc(-200 + 25)" stroke="#333"
stroke-width="8" />
<line x1="2200" y1="calc(-200 - 15)" x2="2200" y2="calc(-200 + 15)" stroke="#333"
stroke-width="5" />
<line x1="2700" y1="calc(-200 - 25)" x2="2700" y2="calc(-200 + 25)" stroke="#333"
stroke-width="8" />
<g transform="translate(1700, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">0</text>
</g>
<g transform="translate(2200, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">500</text>
</g>
<g transform="translate(2700, -260) scale(1,-1)">
<text text-anchor="middle" dominant-baseline="central" font-size="38" fill="#333">1000mm</text>
</g>
</g>
<!-- Legend (outside the flipped group, normal SVG coords) -->
<g transform="translate(2650, 2400)">
<text x="0" y="0" font-size="50" font-weight="bold" fill="#333">Legend</text>
<line x1="0" y1="60" x2="80" y2="60" stroke="#333" stroke-width="14" />
<text x="100" y="75" font-size="40" fill="#555">Wall</text>
<line x1="0" y1="120" x2="80" y2="120" stroke="#333" stroke-width="8" stroke-dasharray="20,10" />
<text x="100" y="135" font-size="40" fill="#555">Shower</text>
<circle cx="40" cy="180" r="18" fill="#4a90d9" />
<text x="100" y="195" font-size="40" fill="#555">Water</text>
<rect x="0" y="225" width="80" height="40" fill="#e85d3a" fill-opacity="0.4" stroke="#e85d3a"
stroke-width="4" />
<text x="100" y="255" font-size="40" fill="#555">Radiator</text>
<line x1="0" y1="300" x2="80" y2="300" stroke="#333" stroke-width="14" stroke-dasharray="20,12" />
<text x="100" y="315" font-size="40" fill="#555">Door</text>
<circle cx="40" cy="360" r="18" fill="none" stroke="#f5a623" stroke-width="4" />
<text x="100" y="375" font-size="40" fill="#555">Light</text>
<rect x="15" y="405" width="50" height="50" fill="none" stroke="#888" stroke-width="3" stroke-dasharray="8,5" />
<line x1="15" y1="405" x2="65" y2="455" stroke="#888" stroke-width="2" />
<line x1="65" y1="405" x2="15" y2="455" stroke="#888" stroke-width="2" />
<text x="100" y="440" font-size="40" fill="#555">Vent</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,160 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3700 3800" width="800" height="820" font-family="monospace" font-size="48">
<!-- Background -->
<rect width="3700" height="3800" fill="#f8f8f8"/>
<!-- Title -->
<text x="1850" y="80" text-anchor="middle" font-size="80" font-weight="bold" fill="#333">Bathroom Blueprint (DRAFT)</text>
<text x="1850" y="140" text-anchor="middle" font-size="42" fill="#888">Coordinates in mm — F/E corner = (0,0) — Y increases upward</text>
<!-- Room in mm. Visual: A at top, F/E (origin) at bottom-left.
SVG coords = (arch_x, 2600 - arch_y) so Y-up maps to SVG Y-down.
Polygon (SVG): A(0,0) B(2500,0) C(2500,1000) D(1500,1000) E(1500,2600) F(0,2600)
Arch coords: A(0,2600) B(2500,2600) C(2500,1600) D(1500,1600) E(1500,0) F(0,0)
-->
<g transform="translate(400, 350)">
<!-- Room outline -->
<polygon points="0,0 2500,0 2500,1000 1500,1000 1500,2600 0,2600"
fill="white" stroke="#333" stroke-width="16" stroke-linejoin="miter"/>
<!-- === EDGE LABELS === -->
<!-- Wall A: top (arch y=2600) -->
<rect x="1210" y="-200" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="1250" y="-150" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">A</text>
<!-- Wall B: right upper (arch x=2500) -->
<rect x="2560" y="460" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="2600" y="510" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">B</text>
<!-- Wall C: step horizontal (arch y=1600) -->
<rect x="1960" y="1040" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="2000" y="1090" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">C</text>
<!-- Wall D: right lower (arch x=1500) -->
<rect x="1560" y="1760" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="1600" y="1810" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">D</text>
<!-- Wall E: bottom / door (arch y=0) -->
<rect x="710" y="2640" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="750" y="2690" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">E</text>
<!-- Wall F: left (arch x=0) -->
<rect x="-200" y="1260" width="80" height="65" rx="10" fill="#e8e8e8" stroke="#999" stroke-width="3"/>
<text x="-160" y="1310" text-anchor="middle" font-size="48" font-weight="bold" fill="#333">F</text>
<!-- === DIMENSIONS === -->
<!-- Wall A: 2500mm (top) -->
<line x1="0" y1="-60" x2="2500" y2="-60" stroke="#555" stroke-width="4"/>
<line x1="0" y1="-85" x2="0" y2="-35" stroke="#555" stroke-width="4"/>
<line x1="2500" y1="-85" x2="2500" y2="-35" stroke="#555" stroke-width="4"/>
<text x="600" y="-90" text-anchor="middle" font-size="48" fill="#555">2500</text>
<!-- Wall F: 2600mm (left) -->
<line x1="-60" y1="0" x2="-60" y2="2600" stroke="#555" stroke-width="4"/>
<line x1="-85" y1="0" x2="-35" y2="0" stroke="#555" stroke-width="4"/>
<line x1="-85" y1="2600" x2="-35" y2="2600" stroke="#555" stroke-width="4"/>
<text x="-100" y="700" text-anchor="middle" font-size="48" fill="#555" transform="rotate(-90, -100, 700)">2600</text>
<!-- Wall E: 1500mm (bottom) -->
<line x1="0" y1="2720" x2="1500" y2="2720" stroke="#555" stroke-width="4"/>
<line x1="0" y1="2695" x2="0" y2="2745" stroke="#555" stroke-width="4"/>
<line x1="1500" y1="2695" x2="1500" y2="2745" stroke="#555" stroke-width="4"/>
<text x="350" y="2800" text-anchor="middle" font-size="48" fill="#555">1500</text>
<!-- Wall B: 1000mm (right upper) -->
<line x1="2660" y1="0" x2="2660" y2="1000" stroke="#555" stroke-width="4"/>
<line x1="2635" y1="0" x2="2685" y2="0" stroke="#555" stroke-width="4"/>
<line x1="2635" y1="1000" x2="2685" y2="1000" stroke="#555" stroke-width="4"/>
<text x="2750" y="520" text-anchor="middle" font-size="48" fill="#555" transform="rotate(90, 2750, 520)">1000</text>
<!-- Wall C: 1000mm (step) -->
<line x1="1500" y1="1120" x2="2500" y2="1120" stroke="#555" stroke-width="4"/>
<line x1="1500" y1="1095" x2="1500" y2="1145" stroke="#555" stroke-width="4"/>
<line x1="2500" y1="1095" x2="2500" y2="1145" stroke="#555" stroke-width="4"/>
<text x="2000" y="1190" text-anchor="middle" font-size="48" fill="#555">1000</text>
<!-- Wall D: 1600mm (right lower) -->
<line x1="1660" y1="1000" x2="1660" y2="2600" stroke="#555" stroke-width="4"/>
<line x1="1635" y1="1000" x2="1685" y2="1000" stroke="#555" stroke-width="4"/>
<line x1="1635" y1="2600" x2="1685" y2="2600" stroke="#555" stroke-width="4"/>
<text x="1750" y="1500" text-anchor="middle" font-size="48" fill="#555" transform="rotate(90, 1750, 1500)">1600</text>
<!-- === BATH (top-left corner, 1850x850, long side along wall F) === -->
<!-- SVG: (25, 25) to (875, 1875) -->
<g>
<rect x="25" y="25" width="850" height="1850" rx="60" fill="none" stroke="#333" stroke-width="10"/>
<rect x="75" y="75" width="750" height="1750" rx="50" fill="#d4e8f7" fill-opacity="0.3" stroke="#999" stroke-width="5"/>
<!-- Faucet (middle of bath, wall F side) -->
<circle cx="40" cy="950" r="30" fill="none" stroke="#4a90d9" stroke-width="7"/>
<circle cx="40" cy="950" r="10" fill="#4a90d9"/>
<!-- Drain -->
<circle cx="425" cy="1700" r="25" fill="none" stroke="#999" stroke-width="5"/>
<text x="425" y="930" text-anchor="middle" font-size="45" fill="#666">Bath</text>
<text x="425" y="990" text-anchor="middle" font-size="38" fill="#666">1850x850</text>
</g>
<!-- === SHOWER (top-right nook, ~1000x1000) === -->
<rect x="1500" y="0" width="1000" height="1000" fill="#d4e8f7" fill-opacity="0.4"
stroke="#333" stroke-width="10" stroke-dasharray="30,15"/>
<!-- Shower head (middle of wall B) -->
<circle cx="2475" cy="500" r="60" fill="none" stroke="#4a90d9" stroke-width="7"/>
<circle cx="2475" cy="500" r="20" fill="#4a90d9"/>
<!-- Drain -->
<circle cx="2000" cy="500" r="35" fill="none" stroke="#999" stroke-width="5"/>
<line x1="1980" y1="500" x2="2020" y2="500" stroke="#999" stroke-width="5"/>
<line x1="2000" y1="480" x2="2000" y2="520" stroke="#999" stroke-width="5"/>
<text x="2000" y="600" text-anchor="middle" font-size="45" fill="#4a90d9">Shower</text>
<text x="2000" y="660" text-anchor="middle" font-size="38" fill="#4a90d9">(~1000x1000)</text>
<!-- === SINK / VANITY (wall F, between bath and bottom/door edge) === -->
<!-- SVG: (25, 2025) to (525, 2475) -->
<g>
<rect x="25" y="2025" width="500" height="450" rx="15" fill="none" stroke="#333" stroke-width="10"/>
<ellipse cx="275" cy="2210" rx="90" ry="130" fill="none" stroke="#333" stroke-width="7"/>
<!-- Faucet -->
<circle cx="100" cy="2210" r="18" fill="none" stroke="#4a90d9" stroke-width="7"/>
<circle cx="100" cy="2210" r="6" fill="#4a90d9"/>
<text x="275" y="2550" text-anchor="middle" font-size="45" fill="#666">Sink</text>
</g>
<!-- === RADIATOR (wall D, 600mm, 600mm from door) === -->
<!-- SVG: x=1425, y=1400 to y=2000, width=75 -->
<rect x="1425" y="1400" width="75" height="600" fill="#e85d3a" fill-opacity="0.4" stroke="#e85d3a" stroke-width="7"/>
<!-- Dimension: 600mm gap between radiator and door on wall D -->
<line x1="1580" y1="2000" x2="1580" y2="2600" stroke="#555" stroke-width="4"/>
<line x1="1555" y1="2000" x2="1605" y2="2000" stroke="#555" stroke-width="4"/>
<line x1="1555" y1="2600" x2="1605" y2="2600" stroke="#555" stroke-width="4"/>
<text x="1620" y="2310" text-anchor="middle" font-size="42" fill="#555" transform="rotate(90, 1620, 2310)">600</text>
<!-- === DOOR (wall E, right side, dotted line) === -->
<!-- 550mm wall from F corner, then door opening -->
<line x1="550" y1="2600" x2="1500" y2="2600" stroke="#333" stroke-width="14" stroke-dasharray="40,25"/>
<!-- Dimension: 550mm wall left of door -->
<line x1="0" y1="2850" x2="550" y2="2850" stroke="#555" stroke-width="4"/>
<line x1="0" y1="2825" x2="0" y2="2875" stroke="#555" stroke-width="4"/>
<line x1="550" y1="2825" x2="550" y2="2875" stroke="#555" stroke-width="4"/>
<text x="275" y="2940" text-anchor="middle" font-size="42" fill="#555">550</text>
<!-- Scale bar (bottom right) -->
<g transform="translate(1700, 2850)">
<line x1="0" y1="0" x2="1000" y2="0" stroke="#333" stroke-width="8"/>
<line x1="0" y1="-25" x2="0" y2="25" stroke="#333" stroke-width="8"/>
<line x1="500" y1="-15" x2="500" y2="15" stroke="#333" stroke-width="5"/>
<line x1="1000" y1="-25" x2="1000" y2="25" stroke="#333" stroke-width="8"/>
<text x="0" y="65" text-anchor="middle" font-size="38" fill="#333">0</text>
<text x="500" y="65" text-anchor="middle" font-size="38" fill="#333">500</text>
<text x="1000" y="65" text-anchor="middle" font-size="38" fill="#333">1000mm</text>
</g>
</g>
<!-- Legend -->
<g transform="translate(3250, 400)">
<text x="0" y="0" font-size="50" font-weight="bold" fill="#333">Legend</text>
<line x1="0" y1="60" x2="80" y2="60" stroke="#333" stroke-width="14"/>
<text x="100" y="75" font-size="40" fill="#555">Wall</text>
<line x1="0" y1="120" x2="80" y2="120" stroke="#333" stroke-width="8" stroke-dasharray="20,10"/>
<text x="100" y="135" font-size="40" fill="#555">Shower</text>
<circle cx="40" cy="180" r="18" fill="#4a90d9"/>
<text x="100" y="195" font-size="40" fill="#555">Water</text>
<rect x="0" y="225" width="80" height="40" fill="#e85d3a" fill-opacity="0.4" stroke="#e85d3a" stroke-width="4"/>
<text x="100" y="255" font-size="40" fill="#555">Radiator</text>
<line x1="0" y1="300" x2="80" y2="300" stroke="#333" stroke-width="14" stroke-dasharray="20,12"/>
<text x="100" y="315" font-size="40" fill="#555">Door</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -9,18 +9,24 @@
Describe what the bathroom looks like now: dimensions, fixtures, materials, condition.
- **Dimensions:** _TODO (L x W in cm/m)_
- **Ceiling height:** _TODO_
- **Dimensions:** L-shaped, see blueprint. Long edge (F) 2600mm, top (A) 2500mm, bottom (E) 1500mm, nook 1000x1000mm
- **Ceiling height:** 2400mm
- **Current flooring:** _TODO_
- **Current wall finish:** _TODO_
- **Fixtures:**
- Toilet: _TODO (type, condition)_
- Sink/vanity: _TODO_
- Shower / bathtub: _TODO_
- Mirror/cabinet: _TODO_
- **Plumbing location:** _TODO (which wall carries the supply/drain lines)_
- **Ventilation:** _TODO (extractor fan?)_
- **Electrical:** _TODO (outlets, lighting, heated floor)_
- Sink/vanity: 550x350mm on wall F, 50mm from wall E (between bath and door)
- Shower: ~1000x1000 nook (top-right corner), water point middle of wall B
- Bathtub (current): 1850x850, upper-left corner along wall F, water point middle of bath on wall F
- Bathtub (planned): freestanding corner bath ~1800x800 (no brick surround)
- Mirror: large mirror with diffuse ring light (keeping)
- Shelf: wall A, 800mm long, 250mm deep, 500mm from wall F — want to keep something similar here (visual break, not necessarily storage)
- Sink-side storage: two [IKEA TISKEN suction cup baskets](https://www.ikea.com/nl/nl/p/tisken-mand-met-zuignap-zwart-90498528/) on wall F next to sink — functional but need a nicer replacement
- **Plumbing location:** shower water on wall B, bath water on wall F
- **Ventilation:** vent on wall D (centered on radiator, no window). Connected to whole-house mechanical ventilation — single motor just behind the opening. Currently always open, causing heat loss.
- **Electrical:**
- Ceiling: [Philips Hue Devere](https://www.philips-hue.com/nl-nl/p/hue-white-ambiance-devere-grote-plafondlamp/4116631P6#specifications) — 420mm, 1100mm from wall F, 700mm from wall A (keeping)
- Mirror: [Philips Hue Adore](https://www.philips-hue.com/nl-nl/p/hue-white-ambiance-adore-badkamerspiegel-met-verlichting/8719514340992) — bathroom mirror with integrated light (keeping)
- **Heating:** towel rail radiator on wall D, 600mm wide, 600mm from door — needs replacing. Tado smart heating system with pre-heat scheduling.
---
@@ -28,16 +34,20 @@ Describe what the bathroom looks like now: dimensions, fixtures, materials, cond
What should the new bathroom achieve?
- [ ] _TODO — e.g., walk-in shower instead of bathtub_
- [ ] _TODO — e.g., double sink_
- [ ] _TODO — e.g., heated floor_
- [ ] _TODO — e.g., specific style/aesthetic_
- [x] Keep the bathtub — replacing with a freestanding corner bath (~1800x800, no brick surround)
- [x] Keep the shower in the existing nook
- [x] No toilet (no room, not needed)
- [ ] _TODO — style/aesthetic direction_
---
## Blueprint
![[Bathroom Blueprint.svg]]
### Current
![[Bathroom Blueprint copy.svg]]
### Future
![[Bathroom Blueprint Future.svg]]
---
@@ -48,7 +58,7 @@ What should the new bathroom achieve?
| Floor tiles | | | |
| Wall tiles | | | |
| Shower screen | | | |
| Toilet | | | |
| Bathtub (freestanding) | | | |
| Sink / vanity | | | |
| Faucets | | | |
| Mirror / cabinet | | | |
@@ -96,6 +106,99 @@ What should the new bathroom achieve?
---
## Things to Think About
### Ventilation — Upgrade the Vent Grille
- The bathroom connects to a whole-house mechanical ventilation system (single motor behind the vent opening on wall D). There is no separate bathroom fan — the central system provides extraction.
- **Problem:** The vent is always open, which means continuous heat loss and unnecessary suction when the bathroom is dry. The motor runs regardless.
- **Solution: humidity-sensitive vent grille.** These exist and work without electricity — a polyamide strip inside the grille expands/contracts with moisture, mechanically opening/closing the shutter. When humidity rises (shower, bath), the grille opens fully. When the room is dry, it closes to a minimum, reducing heat loss and balancing airflow across the house.
- **Options:**
- **[Aereco EHT²](https://www.aereco.com/products/air-inlets/eht2/)** — wall-mounted humidity-sensitive inlet, fully mechanical (no power), up to 52 dB acoustic insulation. Designed for exactly this use case: existing mechanical ventilation with passive grille replacement. This is the most directly applicable product.
- **[Aereco humidity-sensitive exhaust grilles](https://www.aereco.com/product-control/humidity-sensitive/)** — if the vent is on the extraction side (which it is), Aereco also makes extraction-side grilles that modulate airflow based on room humidity.
- **Electronic alternative:** A humidity sensor switch (e.g. Topgreener TDHS5, Lutron Maestro MS-HS3) could control a motorised damper, but this adds wiring complexity. The passive Aereco approach is simpler for a central system.
- **During renovation:** This is the ideal time to swap the grille. The duct behind it is already there. Just measure the duct diameter/opening size and match an Aereco or equivalent product to it.
### Lighting
- Both lights are Philips Hue White Ambiance — tuneable colour temperature (2200-6500K) and dimmable via the Hue app or automation. No hardware dimmer needed.
- The Devere (IP44) covers ambient, the Adore handles task lighting at the mirror. That covers all essential layers.
- If adding anything, a small accent (LED strip in a shower niche) is the only gap. Not essential.
### Waterproofing — Do Not Cut Corners
- The entire shower area and bath surround must be tanked (liquid membrane or sheet membrane) before tiling. This is non-negotiable.
- Extend waterproofing at least 150mm beyond the shower/bath edges. Many professionals recommend tanking the full wet wall floor-to-ceiling.
- The floor should be fully waterproofed, especially at the bath and shower zones.
- Use flexible waterproof tape on all inside corners and pipe penetrations.
- Get this inspected before tiling — you cannot fix it later without ripping tiles off.
### The L-Shape: Use It
- The nook (1000x1000) is a natural shower enclosure. A single glass panel or frameless screen is all you need — the walls do the rest.
- The L-shape creates a natural separation between wet zone (shower/bath side) and dry zone (sink/door side). Lean into that.
- Consider where the towel rail goes — the wall between the sink and the door (wall E, 550mm segment) or the inside of wall D above the radiator.
### Style Directions Worth Exploring
- **Warm spa:** matte stone-look porcelain, oak or walnut vanity, brushed nickel, soft mirror lighting, muted green or clay accents.
- **Quiet hotel:** seamless tile palette, floating vanity, frameless shower glass, minimal grout contrast, concealed storage.
- **Vintage modern:** characterful floor tile, more furniture-like vanity, framed mirror, decorative sconces, warmer metal finishes.
### Plumbing: Keep It Where It Is
- Moving drain lines is expensive and disruptive (especially in concrete floors). If the current drain positions work, keep them.
- Moving supply lines (hot/cold) is much cheaper than moving drains. Adjusting tap positions on the same wall is usually straightforward.
- If replacing the bath, confirm the new one fits the same drain position or plan a short drain extension.
### Heated Floor — Probably Not
- At 2400mm ceiling height, adding underfloor heating raises the floor ~15-20mm (mat + adhesive + tile build-up vs direct tile). That eats into an already low ceiling.
- With Tado you can pre-heat the room via the towel radiator on a schedule, which largely solves the cold-floor-in-the-morning problem.
- A good towel rail radiator replacement gives you warm towels and room heating in one. Prioritise that over underfloor heating.
- If you still want warm feet, a small electric bath mat is a zero-build-up alternative.
### Tile Choices
- Large format tiles (600x600 or larger) with thin grout lines make a small room feel bigger. Fewer grout lines also means less cleaning.
- Light colours reflect light and help compensate for the lack of a window. Dark feature walls can work but keep them to one wall max.
- Consider the same tile on floor and walls (or floor and lower walls) for a seamless look that visually expands the space.
- Non-slip rating matters, especially for the shower floor. Look for R10 or R11 rated tiles in the wet zone.
### Storage
- In a small bathroom, surface clutter kills the feel fast. Plan recessed niches in the shower wall during the build — much cheaper than retrofitting and they do not eat floor space.
- A mirrored cabinet above the sink gives storage and a mirror in one.
- If the vanity is wall-mounted (floating), the visible floor underneath makes the room feel larger.
- **Wall A shelf (existing: 800x250mm, 500mm from wall F):** The current shelf breaks up the long wall nicely. Consider replacing with a similar floating shelf in a material that matches the new design (e.g. solid oak, stone-look composite, or a tiled niche built into the wall). It does not need to be deep — 150250mm is enough for candles, a plant, or decorative objects.
- **Sink-side storage (replacing TISKEN baskets):** Options that look better than suction cup baskets:
- Wall-mounted wire or metal basket shelf (e.g. matte black steel) — screwed in, not suction
- Small floating shelf or pair of shelves next to the mirror
- If the vanity has drawers, move most items inside and keep the wall clean
- A recessed niche in wall F next to the sink (decide during tiling phase — cannot add later)
### Light Switch: Need a Physical Switch with Smart Control
- The Hue lights are smart-controlled, but a physical wall switch is still needed (guests, muscle memory, building codes in some areas).
- If someone flips a dumb switch and cuts power, the Hue bulbs go offline. A smart switch solves this.
- **Options compatible with Philips Hue:**
- **Philips Hue Wall Switch Module** — installs behind your existing switch plate. The physical switch stays but toggles a Hue scene instead of cutting power. Easiest drop-in solution. ~€40.
- **RunLessWire Click for Philips Hue** — wireless, battery-free (kinetic energy). Pairs natively with the Hue Bridge. Can be placed anywhere, no wiring. ~€3550.
- **Friends of Hue switches (Senic / Gira)** — built-in wall switches using Zigbee Green Power (no battery). Premium look, proper wall-plate form factor. Pair directly with Hue Bridge. €50100+ depending on brand/finish.
- **Inovelli Blue Series** — Zigbee 3.0 in-wall switch with built-in humidity sensor (useful for a windowless bathroom). Does **not** pair directly with Hue Bridge; requires SmartThings or Home Assistant as a bridge. More complex but more capable. ~$50.
- **Recommendation:** The Hue Wall Switch Module is the simplest if you already have a switch plate. If you want a clean wireless option with no wiring at all, the RunLessWire Click is worth considering.
### Radiator Replacement
- The existing towel rail radiator on wall D needs replacing. Same position works (vent is above it, plumbing connections are there).
- Size the replacement to the available space: 600mm wide, fitting between the vent above and the 600mm gap to the door below.
- Consider a vertical towel rail if you want more hanging space — a taller, narrower unit could work if the vent position allows it.
- With Tado controlling the schedule, the radiator does double duty: room pre-heating and towel warming.
### Common Mistakes to Avoid
- Not budgeting for contingency (15% minimum). There are always surprises behind old tiles.
- Choosing fixtures before confirming they physically fit. Measure clearances: 200mm minimum from sink centre to side wall, 600mm clear in front of any fixture.
- Forgetting about the door swing — yours opens outward (good), so no conflict, but check nothing blocks it from the corridor side.
- Skipping a site visit with your plumber before demolition. Let them see the existing setup and flag issues.
- Over-specifying trendy finishes that date quickly. Neutral base, personality through accessories.
### If I Were Optimizing This Layout
- Keep the shower in the existing nook unless plumbing constraints make it painful. That part of the plan is already doing useful work.
- Use a wall-hung vanity with drawers rather than a freestanding cabinet. In a room this size, visible floor area helps.
- Make the freestanding bath feel deliberate: consider a ledge or niche nearby, proper bath filler position, and enough surrounding calm that it reads as an asset rather than leftover compromise.
- Reduce the number of finish changes. A smaller room usually benefits from calm surfaces more than from visual variety.
---
## Notes
-
@@ -104,6 +207,30 @@ What should the new bathroom achieve?
## Reference / Inspiration
Links, photos, or ideas collected.
### Current Sources Worth Trusting
- [2025 U.S. Houzz Bathroom Trends Study](https://www.houzz.com/magazine/2025-u-s-houzz-bathroom-trends-study-stsetivw-vs~183227801)
- [NKBA 2026 Bath Trends Report announcement](https://nkba.org/press/nkba-kbis-releases-annual-2026-bath-trends-report/)
- [Home Ventilating Institute bathroom ventilation guidance](https://www.hvi.org/resources/publications/bathroom-ventilation/)
- [Tile Council of North America slip classification overview](https://tcnatile.com/national-standard-ansi-a326-3-now-requires-hard-surface-flooring-manufacturers-to-provide-product-use-classifications-based-on-their-slip-resistance-properties/)
-
### Trends & Ideas (2025-2026)
- [Bathroom Trends 2026: What's In, What's Out — Decorilla](https://www.decorilla.com/online-decorating/bathroom-trends-2026/)
- [25 Bathroom Renovation Ideas for 2026 — The Coolist](https://www.thecoolist.com/bathroom-renovation-ideas-for-2026/)
- [10 Inspiring Bathroom Renovation Ideas for 2026 — Decor8 AI](https://blog.decor8.ai/post/10-inspiring-bathroom-renovation-ideas-for-your-2026-project)
- [Small Bathroom Layouts: Space-Smart Plans — Horow](https://horow.com/blogs/guide/small-bathroom-layouts-space-smart-plans)
### Mistakes to Avoid
- [Bathroom Renovation Regrets — Emily Henderson](https://stylebyemilyhenderson.com/bathroom-renovation-mistakes-and-tips)
- [10 Common Bathroom Remodel Mistakes — Tile Club](https://www.tileclub.com/blogs/news/10-common-bathroom-remodel-mistakes-and-how-to-avoid-them)
- [14 Bathroom Remodel Mistakes to Avoid — Home Art Tile](https://homearttile.com/bathroom-remodeling-mistakes-to-avoid/)
- [Common Bathroom Remodel Mistakes — Sweeten](https://sweeten.com/blog/home-renovation-process/common-bathroom-remodel-mistakes-avoid/)
### Shower + Bath Combos
- [Walk-in Shower with Tub Inside — Empava](https://empava.com/blogs/new/bathtub-inside-walk-in-shower-layout-and-design-ideas)
- [Walk-in Shower Ideas for Small Bathrooms — Mobility Plus](https://www.mobility-plus.co.uk/blog/inspiration/walk-in-shower-layouts-small-bathrooms/)
- [Small Tub/Shower Combo Ideas — Houzz](https://www.houzz.com/photos/small-tub-shower-combo-ideas-phbr2-bp~t_712~a_24-136--30-231)
### Budget & Planning
- [Bathroom Remodel Tips for 2026 — Block Renovation](https://www.blockrenovation.com/guides/bathroom-remodel-tips-for-2026)
- [Small Bathroom Remodel Costs 2026 — Badeloft](https://www.badeloftusa.com/buying-guides/small-bathroom-remodel-costs/)
- [Renovating Small Bathroom on a Budget — Half Price Baths](https://www.halfpricebaths.com/renovating-small-bathroom-on-a-budget-choosing-the-right-materials/)