{
  "meta": {
    "name": "Casa Sobreposta v3 (R11) · revisão E",
    "date": "2026-10-25",
    "D": 6.9,
    "shift_south": 0.5,
    "W": 32.0,
    "ground_end": 24.945,
    "overhang": 1.5,
    "H": 2.82,
    "t_ext": 0.13,
    "t_int": 0.1,
    "t_up": 0.2,
    "bands": {
      "south_inner": 0.13,
      "corridor_north": 1.33,
      "shelf_north": 2.03,
      "wall_north": 2.13,
      "north_inner": 6.7700000000000005
    },
    "north_local": [
      -0.1478,
      0.989
    ],
    "status": "Fachada norte revista e prolongada até ao fim da pérgula, com três vãos; quatro vãos inferiores removidos e dois superiores acrescentados na cozinha.",
    "revision": "2026-10-25-E16",
    "based_on": "program_v3d.json",
    "pending": [
      "Frigorífico e equipamento definitivo",
      "Implantação paralela ao limite sul",
      "Instalações à vista",
      "Estrutura e envolvente da caixa de escada; guarda e alturas livres em corte",
      "Estante de dois pisos: estrutura, cargas e acesso aos livros altos; eventual integração do corrimão na estante; acesso de manutenção à cobertura do estacionamento",
      "Fechar área de construção incluindo anexos e exteriores cobertos: limite 500 m²; dimensionar ligações da pala e corte térmico",
      "Seleção de caixilharia de 30 cm e verificação de luz natural/ventilação",
      "Ensaios acústicos dos fechos da biblioteca e armários; caudais e folgas dos equipamentos",
      "Estrutura, guardas, drenagem e licenciamento da varanda; ligação ao jardim por redefinir; simulação térmica com estores"
    ],
    "upper_bands": {
      "south_inner": 0.13,
      "corridor_north": 1.4,
      "shelf_north": 1.8,
      "wall_north": 1.9,
      "north_inner": 6.7700000000000005
    },
    "corridor_clear_m": 1.2,
    "cabinet_nominal_depth_m": 0.7,
    "upper_west": 7.95,
    "upper_east": 19.5,
    "upper_core_note": "Face poente superior alinhada à face térrea x=7,95; banho e rouparia ganham 0,95 m de largura.",
    "upper_envelope_east": 25.01,
    "area_note": "Envolvente alargada 0,22 m no total para manter estrutura interior e corredor livre. Critério de área anterior conservado, incluindo a caixa de escada.",
    "east_roof_use": "Cobertura técnica sobre o estacionamento, sem acesso direto pelo piso 1."
  },
  "variant": "E",
  "voids": [
    [
      0.1,
      0.02,
      7.95,
      6.88
    ],
    [
      18.05,
      1.4,
      19.3,
      5.565
    ],
    [
      19.3,
      0.2,
      24.88,
      6.88
    ],
    [
      18.0,
      5.565,
      19.3,
      6.9
    ]
  ],
  "gross_deduct": [],
  "room_label": null,
  "upper_gross_rects": [
    [
      7.95,
      -0.11,
      19.5,
      7.01
    ]
  ],
  "deck_rects": [
    [
      -6.25,
      0,
      0,
      6.9
    ],
    [
      25.01,
      0,
      32.0,
      6.9
    ]
  ],
  "spaces": [
    {
      "id": "living",
      "label": "Estar / jantar",
      "floor": 0,
      "rect": [
        0.1,
        0.13,
        4.4,
        6.88
      ],
      "kind": "living",
      "counted": true,
      "note": "Open plan with the kitchen."
    },
    {
      "id": "kitchen",
      "label": "Cozinha",
      "floor": 0,
      "rect": [
        4.4,
        0.13,
        7.95,
        6.88
      ],
      "kind": "kitchen",
      "counted": true,
      "note": "Sem escada. Bancadas norte/sul simétricas de 5,50 × 0,65 m; só móveis baixos."
    },
    {
      "id": "corridor",
      "label": "Corredor · 1,20 m livres",
      "floor": 0,
      "rect": [
        7.95,
        0.13,
        18.05,
        1.33
      ],
      "kind": "circulation",
      "counted": true,
      "note": "Armários com 0,70 m nominal. Abre diretamente para o espaço de entrada."
    },
    {
      "id": "laundry",
      "label": "Arrumos / tanque",
      "floor": 0,
      "rect": null,
      "kind": "laundry",
      "counted": false,
      "note": "Tanque integrado no átrio; divisão eliminada em H1."
    },
    {
      "id": "lobby",
      "label": "Átrio / tanque",
      "floor": 0,
      "rect": [
        8.65,
        2.13,
        10.45,
        3.4
      ],
      "kind": "circulation",
      "counted": true,
      "note": ""
    },
    {
      "id": "bath",
      "label": "Banho comum · adaptação acessível",
      "floor": 0,
      "rect": [
        8.65,
        3.5,
        10.45,
        6.88
      ],
      "kind": "bath",
      "counted": true,
      "note": ""
    },
    {
      "id": "wc",
      "label": "WC social",
      "floor": 0,
      "rect": [
        10.55,
        2.13,
        11.95,
        3.3
      ],
      "kind": "bath",
      "counted": true,
      "note": ""
    },
    {
      "id": "ensuite",
      "label": "Banho privativo Q1",
      "floor": 0,
      "rect": [
        10.55,
        3.4,
        11.95,
        6.88
      ],
      "kind": "bath",
      "counted": true,
      "note": "Private to bedroom 1, door from the bedroom only."
    },
    {
      "id": "bed1",
      "label": "Quarto 1 (suite)",
      "floor": 0,
      "rect": [
        12.05,
        2.03,
        14.95,
        6.88
      ],
      "kind": "bedroom",
      "counted": true,
      "note": "H2: dois vãos verticais de 0,57 × 1,25 m no tosco, peitoril 0,95 m; total 1,425 m²."
    },
    {
      "id": "bed2",
      "label": "Quarto 2",
      "floor": 0,
      "rect": [
        15.05,
        2.03,
        17.95,
        6.88
      ],
      "kind": "bedroom",
      "counted": true,
      "note": "H2: dois vãos verticais de 0,57 × 1,25 m no tosco, peitoril 0,95 m; total 1,425 m²."
    },
    {
      "id": "flex",
      "label": "Foyer / estar",
      "floor": 0,
      "rect": [
        18.05,
        0.13,
        24.88,
        6.88
      ],
      "kind": "living",
      "counted": true,
      "note": "Sofá e duas poltronas; percurso nascente de 1,20 m e passagem sul livres.",
      "exclude_rects": [
        [
          18.05,
          1.4,
          19.3,
          5.565
        ],
        [
          19.3,
          1.4,
          19.65,
          5.565
        ]
      ]
    },
    {
      "id": "parking",
      "label": "Estacionamento · 2 lugares",
      "floor": 0,
      "rect": [
        25.01,
        0,
        32.0,
        6.9
      ],
      "kind": "parking",
      "counted": false,
      "note": ""
    },
    {
      "id": "landing-up",
      "label": "Patamar",
      "floor": 1,
      "rect": [
        18.0,
        0.2,
        19.3,
        1.4
      ],
      "kind": "circulation",
      "counted": true,
      "note": "Desembarque a sul, aberto para a biblioteca. 1,20 m livres na direção de chegada."
    },
    {
      "id": "gallery",
      "label": "Acesso ao banho · 1,20 m",
      "floor": 1,
      "rect": [
        8.15,
        0.2,
        12.05,
        1.4
      ],
      "kind": "circulation",
      "counted": true,
      "note": "Continua livremente para a biblioteca; sem parede a separá-la da antiga galeria."
    },
    {
      "id": "linen",
      "label": "Átrio / rouparia",
      "floor": 1,
      "rect": [
        8.65,
        1.9,
        11.95,
        4.4
      ],
      "kind": "circulation",
      "counted": true,
      "note": ""
    },
    {
      "id": "bath-up",
      "label": "Banho visitas",
      "floor": 1,
      "rect": [
        8.65,
        4.5,
        11.95,
        6.88
      ],
      "kind": "bath",
      "counted": true,
      "note": "Stacked over the ground-floor bath."
    },
    {
      "id": "deck",
      "label": "Coberturas baixas técnicas",
      "floor": 1,
      "rect": null,
      "kind": "roof",
      "counted": false,
      "note": "Pátio e estacionamento cobertos; pala sul sem acesso, porta ou guarda."
    },
    {
      "id": "guest",
      "label": "Biblioteca / quarto de visitas",
      "floor": 1,
      "rect": [
        12.05,
        0.2,
        18.0,
        6.88
      ],
      "kind": "bedroom",
      "counted": true,
      "note": "Biblioteca fechável com vidro e porta no desembarque; cama rebatível mantida. Desempenho acústico por verificar."
    }
  ],
  "walls": [
    {
      "floor": 0,
      "rect": [
        0.0,
        -0.11,
        24.88,
        0.02
      ],
      "kind": "facade"
    },
    {
      "floor": 0,
      "rect": [
        0.0,
        6.88,
        24.88,
        7.01
      ],
      "kind": "facade"
    },
    {
      "floor": 0,
      "rect": [
        0.0,
        -0.11,
        0.1,
        7.01
      ],
      "kind": "glazing"
    },
    {
      "floor": 0,
      "rect": [
        24.88,
        -0.11,
        25.01,
        7.01
      ],
      "kind": "facade"
    },
    {
      "floor": 0,
      "rect": [
        8.65,
        3.4,
        10.45,
        3.5
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        10.45,
        2.13,
        10.55,
        6.88
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        10.55,
        3.3,
        11.95,
        3.4
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        11.95,
        2.03,
        12.05,
        6.88
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        14.95,
        2.03,
        15.05,
        6.88
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        17.95,
        2.03,
        18.05,
        6.88
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        7.95,
        2.03,
        9.55,
        2.13
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        7.95,
        1.33,
        8.0,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 0,
      "rect": [
        8.7,
        1.33,
        8.75,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 0,
      "rect": [
        9.4,
        1.33,
        9.5,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 0,
      "rect": [
        10.35,
        2.03,
        12.05,
        2.13
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        10.4,
        1.33,
        12.25,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 0,
      "rect": [
        14.95,
        2.03,
        15.05,
        2.13
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        14.95,
        1.33,
        15.25,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 0,
      "rect": [
        17.95,
        2.03,
        18.05,
        2.13
      ],
      "kind": "partition"
    },
    {
      "floor": 0,
      "rect": [
        17.95,
        1.33,
        18.05,
        2.03
      ],
      "kind": "shelf"
    },
    {
      "floor": 1,
      "rect": [
        0,
        -0.11,
        7.95,
        0.02
      ],
      "kind": "facade"
    },
    {
      "floor": 1,
      "rect": [
        0,
        6.88,
        7.95,
        7.01
      ],
      "kind": "facade"
    },
    {
      "floor": 1,
      "rect": [
        0,
        -0.11,
        0.1,
        7.01
      ],
      "kind": "glazing"
    },
    {
      "floor": 1,
      "rect": [
        7.95,
        -0.11,
        19.5,
        0.02
      ],
      "kind": "upper"
    },
    {
      "floor": 1,
      "rect": [
        7.95,
        6.88,
        19.5,
        7.01
      ],
      "kind": "upper"
    },
    {
      "floor": 1,
      "rect": [
        11.95,
        1.9,
        12.05,
        6.88
      ],
      "kind": "partition"
    },
    {
      "floor": 1,
      "rect": [
        8.65,
        4.4,
        11.95,
        4.5
      ],
      "kind": "partition"
    },
    {
      "floor": 1,
      "rect": [
        8.65,
        1.4,
        10.0,
        1.8
      ],
      "kind": "shelf"
    },
    {
      "floor": 1,
      "rect": [
        8.65,
        1.8,
        10.0,
        1.9
      ],
      "kind": "partition"
    },
    {
      "floor": 1,
      "rect": [
        10.8,
        1.8,
        12.05,
        1.9
      ],
      "kind": "partition"
    },
    {
      "floor": 1,
      "rect": [
        17.95,
        1.4,
        18.0,
        6.88
      ],
      "kind": "screen"
    },
    {
      "floor": 1,
      "rect": [
        19.5,
        -0.11,
        24.88,
        0.02
      ],
      "kind": "upper"
    },
    {
      "floor": 1,
      "rect": [
        19.5,
        6.88,
        24.88,
        7.01
      ],
      "kind": "upper"
    },
    {
      "floor": 1,
      "rect": [
        24.88,
        -0.11,
        25.01,
        7.01
      ],
      "kind": "upper"
    },
    {
      "floor": 1,
      "rect": [
        19.27,
        0.2,
        19.3,
        1.4
      ],
      "kind": "screen"
    },
    {
      "rect": [
        -6.25,
        6.88,
        0,
        7.01
      ],
      "floor": 0,
      "kind": "facade",
      "id": "north-patio-screen-0"
    },
    {
      "rect": [
        -6.25,
        6.88,
        0,
        7.01
      ],
      "floor": 1,
      "kind": "facade",
      "id": "north-patio-screen-1"
    }
  ],
  "doors": [
    {
      "floor": 0,
      "hinge": [
        24.88,
        6.65
      ],
      "closed": [
        0,
        -1
      ],
      "opens": [
        -1,
        0
      ],
      "width": 1.1,
      "kind": "hinged",
      "label": "Entrada nordeste",
      "wall_thickness": 0.13,
      "id": "h1-door-0"
    },
    {
      "floor": 0,
      "hinge": [
        9.5,
        2.13
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.9,
      "kind": "opening",
      "label": "Passagem aberta para átrio do banho",
      "id": "h1-door-1"
    },
    {
      "floor": 0,
      "hinge": [
        10.5,
        2.2
      ],
      "closed": [
        0,
        1
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.95,
      "kind": "sliding",
      "label": "WC social · correr embutida",
      "open_offset": [
        0,
        0.95
      ],
      "pocket_rect": [
        10.475,
        3.15,
        10.525,
        4.1
      ],
      "id": "h1-door-2"
    },
    {
      "floor": 0,
      "hinge": [
        10.35,
        3.45
      ],
      "closed": [
        -1,
        0
      ],
      "opens": [
        0,
        -1
      ],
      "width": 0.95,
      "kind": "hinged",
      "label": "Banho comum · abre para fora",
      "id": "h1-door-3"
    },
    {
      "floor": 0,
      "hinge": [
        12.0,
        4.4
      ],
      "closed": [
        0,
        -1
      ],
      "opens": [
        -1,
        0
      ],
      "width": 0.95,
      "kind": "hinged",
      "label": "Banho da suite",
      "id": "h1-door-4"
    },
    {
      "floor": 0,
      "hinge": [
        12.25,
        2.03
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.95,
      "kind": "hinged",
      "label": "",
      "id": "h1-door-5"
    },
    {
      "floor": 0,
      "hinge": [
        15.25,
        2.03
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.95,
      "kind": "hinged",
      "label": "",
      "id": "h1-door-6"
    },
    {
      "floor": 0,
      "hinge": [
        0.05,
        4.95
      ],
      "closed": [
        0,
        1
      ],
      "opens": [
        0,
        1
      ],
      "width": 1.0,
      "kind": "sliding",
      "label": "Pátio",
      "id": "h1-door-7"
    },
    {
      "floor": 0,
      "hinge": [
        8.0,
        1.33
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        1,
        0
      ],
      "width": 0.7,
      "kind": "retractable",
      "label": "Máquina de lavar",
      "use": "cabinet"
    },
    {
      "floor": 0,
      "hinge": [
        8.75,
        1.33
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        1,
        0
      ],
      "width": 0.7,
      "kind": "retractable",
      "label": "Máquina de secar",
      "use": "cabinet"
    },
    {
      "floor": 1,
      "hinge": [
        10.0,
        1.9
      ],
      "closed": [
        1,
        0
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.8,
      "kind": "hinged",
      "label": "Rouparia"
    },
    {
      "floor": 1,
      "hinge": [
        10.35,
        4.45
      ],
      "closed": [
        -1,
        0
      ],
      "opens": [
        0,
        1
      ],
      "width": 0.8,
      "kind": "hinged",
      "label": "Banho visitas"
    }
  ],
  "modules": [
    {
      "id": "island",
      "label": "Ilha 3,60 × 1,00 · passagem alargada",
      "floor": 0,
      "rect": [
        5.7,
        1.65,
        6.7,
        5.25
      ],
      "kind": "island",
      "note": "North to south: placa 0,90 | módulo livre 0,90 | lava-loiça duplo 0,90 | escorredor + máq. loiça 0,90.",
      "dashed": false
    },
    {
      "id": "island-0",
      "label": "placa",
      "floor": 0,
      "rect": [
        5.7,
        4.35,
        6.7,
        5.25
      ],
      "kind": "island-part",
      "note": "",
      "dashed": false
    },
    {
      "id": "island-1",
      "label": "livre",
      "floor": 0,
      "rect": [
        5.7,
        3.45,
        6.7,
        4.35
      ],
      "kind": "island-part",
      "note": "",
      "dashed": false
    },
    {
      "id": "island-2",
      "label": "lava duplo",
      "floor": 0,
      "rect": [
        5.7,
        2.55,
        6.7,
        3.45
      ],
      "kind": "island-part",
      "note": "",
      "dashed": false
    },
    {
      "id": "island-3",
      "label": "escorredor",
      "floor": 0,
      "rect": [
        5.7,
        1.65,
        6.7,
        2.55
      ],
      "kind": "island-part",
      "note": "",
      "dashed": false
    },
    {
      "id": "south-top",
      "label": "Bancada sul · 5,50 × 0,76",
      "floor": 0,
      "rect": [
        0.1,
        0.02,
        5.6,
        0.78
      ],
      "kind": "worktop",
      "note": "Simétrica da bancada norte, apenas móveis baixos; extremo nascente alinhado em x=5,60 m, conforme as marcações.",
      "dashed": false,
      "label_at": [
        2.85,
        0.455
      ],
      "height_m": 0.9
    },
    {
      "id": "table",
      "label": "Mesa",
      "floor": 0,
      "rect": [
        2.3,
        2.4499999999999997,
        3.25,
        4.45
      ],
      "kind": "furniture",
      "note": "",
      "dashed": false
    },
    {
      "id": "laundry-top",
      "label": "Bancada + tanque",
      "floor": 0,
      "rect": [
        8.7,
        2.13,
        9.3,
        2.7
      ],
      "kind": "worktop",
      "note": "",
      "dashed": false
    },
    {
      "id": "bath-shower",
      "label": "Duche",
      "floor": 0,
      "rect": [
        8.65,
        5.98,
        10.45,
        6.88
      ],
      "kind": "sanitary",
      "note": "Duche ao nível do pavimento; resguardo recolhível, reserva para assento e barras.",
      "dashed": false,
      "flush": true
    },
    {
      "id": "bath-wc",
      "label": "Sanita",
      "floor": 0,
      "rect": [
        8.65,
        5.3,
        9.3,
        5.7
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "bath-basin",
      "label": "Lavatório",
      "floor": 0,
      "rect": [
        9.95,
        4.9,
        10.45,
        5.5
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false,
      "wall_hung": true
    },
    {
      "id": "wc-wc",
      "label": "Sanita",
      "floor": 0,
      "rect": [
        11.3,
        2.5,
        11.95,
        2.9
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "wc-basin",
      "label": "Lav.",
      "floor": 0,
      "rect": [
        10.75,
        2.95,
        11.2,
        3.3
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "ens-shower",
      "label": "Duche",
      "floor": 0,
      "rect": [
        10.55,
        5.98,
        11.95,
        6.88
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "ens-wc",
      "label": "Sanita",
      "floor": 0,
      "rect": [
        10.55,
        4.6,
        11.2,
        5.0
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "ens-basin",
      "label": "Lav.",
      "floor": 0,
      "rect": [
        11.5,
        5.15,
        11.95,
        5.75
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false,
      "wall_hung": true
    },
    {
      "id": "bed1-bed",
      "label": "Cama 1,60 × 2,00",
      "floor": 0,
      "rect": [
        12.100000000000001,
        5.08,
        14.100000000000001,
        6.68
      ],
      "kind": "furniture",
      "note": "Cama rodada: lado sul livre para transferência; lado norte com 0,20 m, não acessível.",
      "dashed": false,
      "head": "west"
    },
    {
      "id": "bed2-bed",
      "label": "Cama 1,60 × 2,00",
      "floor": 0,
      "rect": [
        15.100000000000001,
        5.08,
        17.1,
        6.68
      ],
      "kind": "furniture",
      "note": "Cama rodada: lado sul livre para transferência; lado norte com 0,20 m, não acessível.",
      "dashed": false,
      "head": "west"
    },
    {
      "id": "p1",
      "label": "P1 · 2,50 × 5,00",
      "floor": 0,
      "rect": [
        25.6,
        0.5,
        30.6,
        3.0
      ],
      "kind": "bay",
      "note": "Lugares deslocados 0,40 m a sul para libertar a aproximação coberta à entrada norte.",
      "dashed": false
    },
    {
      "id": "p2",
      "label": "P2 · 2,50 × 5,00",
      "floor": 0,
      "rect": [
        25.6,
        3.0,
        30.6,
        5.5
      ],
      "kind": "bay",
      "note": "Lugares deslocados 0,40 m a sul para libertar a aproximação coberta à entrada norte.",
      "dashed": false
    },
    {
      "id": "upb-shower",
      "label": "Duche",
      "floor": 1,
      "rect": [
        9.75,
        5.98,
        10.65,
        6.88
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "upb-wc",
      "label": "Sanita",
      "floor": 1,
      "rect": [
        11.1,
        6.23,
        11.5,
        6.88
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "upb-basin",
      "label": "Lavatório",
      "floor": 1,
      "rect": [
        11.5,
        5.05,
        11.95,
        5.85
      ],
      "kind": "sanitary",
      "note": "",
      "dashed": false
    },
    {
      "id": "north-top",
      "label": "Bancada norte · 5,50 × 0,76",
      "floor": 0,
      "rect": [
        0.1,
        6.12,
        5.6,
        6.88
      ],
      "kind": "worktop",
      "dashed": false,
      "height_m": 0.9,
      "note": "Simétrica da bancada sul, apenas móveis baixos. Frigorífico/equipamento por compatibilizar."
    },
    {
      "id": "washer",
      "label": "Lavar\n0,70 × 0,70",
      "floor": 0,
      "rect": [
        8.0,
        1.33,
        8.7,
        2.03
      ],
      "kind": "appliance",
      "dashed": false,
      "note": "Frentes recolhíveis nas ilhargas; abertura não invade corredor. Reserva para ventilação por labirinto e apoio antivibrático.",
      "door_type": "retractable"
    },
    {
      "id": "dryer",
      "label": "Secar\n0,70 × 0,70",
      "floor": 0,
      "rect": [
        8.75,
        1.33,
        9.45,
        2.03
      ],
      "kind": "appliance",
      "dashed": false,
      "note": "Frentes recolhíveis nas ilhargas; abertura não invade corredor. Reserva para ventilação por labirinto e apoio antivibrático.",
      "door_type": "retractable"
    },
    {
      "id": "reading-table",
      "label": "Mesa de leitura",
      "floor": 1,
      "rect": [
        15.3,
        2.5,
        17.1,
        3.4
      ],
      "kind": "furniture",
      "dashed": false
    },
    {
      "id": "wardrobe-q1",
      "label": "Roupeiro Q1",
      "floor": 0,
      "rect": [
        13.25,
        1.33,
        14.95,
        2.03
      ],
      "kind": "wardrobe",
      "access_sides": [
        "north"
      ],
      "room_id": "bed1",
      "depth_m": 0.7,
      "note": "Acesso apenas pelo quarto; tardoz contínuo de 60 mm voltado ao corredor, composição acústica a ensaiar.",
      "acoustic_back_m": 0.06
    },
    {
      "id": "wardrobe-q2",
      "label": "Roupeiro Q2",
      "floor": 0,
      "rect": [
        16.25,
        1.33,
        17.95,
        2.03
      ],
      "kind": "wardrobe",
      "access_sides": [
        "north"
      ],
      "room_id": "bed2",
      "depth_m": 0.7,
      "note": "Acesso apenas pelo quarto; tardoz contínuo de 60 mm voltado ao corredor, composição acústica a ensaiar.",
      "acoustic_back_m": 0.06
    },
    {
      "id": "bed-cab",
      "label": "Cama rebatível 140 × 200",
      "floor": 1,
      "rect": [
        12.05,
        4.7,
        12.5,
        6.8
      ],
      "kind": "bedcab",
      "note": "Três módulos de 0,70 x 0,45 até ao teto; cama rebatível e arrumação superior.",
      "front": "east",
      "module_pitch_m": 0.7,
      "height_m": 2.5
    },
    {
      "id": "bed-open",
      "label": "cama aberta",
      "floor": 1,
      "rect": [
        12.5,
        5.0,
        14.65,
        6.4
      ],
      "kind": "bedopen",
      "dashed": true
    },
    {
      "id": "foyer-books-0",
      "label": "Estante vazada · 2 pisos",
      "floor": 0,
      "rect": [
        19.3,
        1.4,
        19.65,
        5.565
      ],
      "kind": "bookfilter",
      "depth_m": 0.35,
      "open_back": true,
      "note": "Estante vazada junto à escada: filtro visual nos dois pisos, sem fundo opaco. Um corrimão do lado da estante, com eventual integração a desenvolver; proteção independente dos livros."
    },
    {
      "id": "foyer-books-1",
      "label": "Estante vazada · 2 pisos",
      "floor": 1,
      "rect": [
        19.3,
        1.4,
        19.65,
        5.565
      ],
      "kind": "bookfilter",
      "depth_m": 0.35,
      "open_back": true,
      "note": "Estante vazada junto à escada: filtro visual nos dois pisos, sem fundo opaco. Um corrimão do lado da estante, com eventual integração a desenvolver; proteção independente dos livros."
    },
    {
      "id": "library-book-1",
      "label": "Estante biblioteca 1",
      "floor": 1,
      "rect": [
        12.05,
        1.9,
        12.5,
        2.6
      ],
      "kind": "shelfmod",
      "front": "east",
      "module_pitch_m": 0.7,
      "height_m": 2.5,
      "open_end": "first"
    },
    {
      "id": "library-book-2",
      "label": "Estante biblioteca 2",
      "floor": 1,
      "rect": [
        12.05,
        2.6,
        12.5,
        3.3
      ],
      "kind": "shelfmod",
      "front": "east",
      "module_pitch_m": 0.7,
      "height_m": 2.5
    },
    {
      "id": "library-book-3",
      "label": "Estante biblioteca 3",
      "floor": 1,
      "rect": [
        12.05,
        3.3,
        12.5,
        4.0
      ],
      "kind": "shelfmod",
      "front": "east",
      "module_pitch_m": 0.7,
      "height_m": 2.5
    },
    {
      "id": "library-book-4",
      "label": "Estante biblioteca 4",
      "floor": 1,
      "rect": [
        12.05,
        4.0,
        12.5,
        4.7
      ],
      "kind": "shelfmod",
      "front": "east",
      "module_pitch_m": 0.7,
      "height_m": 2.5
    },
    {
      "id": "library-return-1",
      "label": "Estante de retorno para a galeria 1",
      "floor": 1,
      "rect": [
        11.1,
        1.45,
        11.8,
        1.9
      ],
      "kind": "shelfmod",
      "module_pitch_m": 0.7,
      "height_m": 2.5,
      "open_end": null,
      "corner_back_cut": 0
    },
    {
      "id": "library-return-2",
      "label": "Estante de retorno para a galeria 2",
      "floor": 1,
      "rect": [
        11.8,
        1.45,
        12.5,
        1.9
      ],
      "kind": "shelfmod",
      "module_pitch_m": 0.7,
      "height_m": 2.5,
      "open_end": "last",
      "corner_back_cut": 0.45
    },
    {
      "id": "core-cabinet-0-1",
      "label": "Móvel cozinha / núcleo P0 · módulo 1",
      "floor": 0,
      "rect": [
        7.95,
        2.3,
        8.65,
        3.0
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-0-2",
      "label": "Móvel cozinha / núcleo P0 · módulo 2",
      "floor": 0,
      "rect": [
        7.95,
        3.0,
        8.65,
        3.7
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-0-3",
      "label": "Móvel cozinha / núcleo P0 · módulo 3",
      "floor": 0,
      "rect": [
        7.95,
        3.7,
        8.65,
        4.4
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-0-4",
      "label": "Móvel cozinha / núcleo P0 · módulo 4",
      "floor": 0,
      "rect": [
        7.95,
        4.5,
        8.65,
        5.2
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-0-5",
      "label": "Móvel cozinha / núcleo P0 · módulo 5",
      "floor": 0,
      "rect": [
        7.95,
        5.2,
        8.65,
        5.9
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-0-6",
      "label": "Móvel cozinha / núcleo P0 · módulo 6",
      "floor": 0,
      "rect": [
        7.95,
        5.9,
        8.65,
        6.6
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "west"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7
    },
    {
      "id": "core-cabinet-1-1",
      "label": "Móvel cozinha / núcleo P1 · módulo 1",
      "floor": 1,
      "rect": [
        7.95,
        2.3,
        8.65,
        3.0
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    },
    {
      "id": "core-cabinet-1-2",
      "label": "Móvel cozinha / núcleo P1 · módulo 2",
      "floor": 1,
      "rect": [
        7.95,
        3.0,
        8.65,
        3.7
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    },
    {
      "id": "core-cabinet-1-3",
      "label": "Móvel cozinha / núcleo P1 · módulo 3",
      "floor": 1,
      "rect": [
        7.95,
        3.7,
        8.65,
        4.4
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    },
    {
      "id": "core-cabinet-1-4",
      "label": "Móvel cozinha / núcleo P1 · módulo 4",
      "floor": 1,
      "rect": [
        7.95,
        4.5,
        8.65,
        5.2
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    },
    {
      "id": "core-cabinet-1-5",
      "label": "Móvel cozinha / núcleo P1 · módulo 5",
      "floor": 1,
      "rect": [
        7.95,
        5.2,
        8.65,
        5.9
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    },
    {
      "id": "core-cabinet-1-6",
      "label": "Móvel cozinha / núcleo P1 · módulo 6",
      "floor": 1,
      "rect": [
        7.95,
        5.9,
        8.65,
        6.6
      ],
      "kind": "core-cabinet",
      "access_sides": [
        "east"
      ],
      "height_m": 2.5,
      "module_pitch_m": 0.7,
      "depth_m": 0.7,
      "note": "Frente poente fixa e sem puxador; acesso apenas pela rouparia/banho, sem comunicação com o vazio da cozinha."
    }
  ],
  "stair": {
    "floor": 0,
    "x0": 18.05,
    "x1": 19.3,
    "clear": 1.2,
    "first_riser_y": 5.565,
    "going": 0.27766666666666673,
    "risers": 16,
    "riser": 0.17625,
    "landing": 1.205,
    "bottom_open_side": true,
    "direction": -1,
    "note": "16 espelhos de 17,625 cm e 15 cobertores de 27,77 cm; mantém implantação, chegada e vazio sobre o arranque.",
    "top_y": 1.4,
    "status": "recalculated_for_approved_heights",
    "handrail_sides": [
      "east"
    ],
    "handrail_note": "Um corrimão inclinado apenas do lado da estante; integração na estante ainda por definir. Sem piso sobre o arranque norte."
  },
  "stair_opening": [
    18.05,
    1.4,
    19.3,
    5.565
  ],
  "patio": {
    "podium": [
      -6.25,
      -1.75,
      0,
      7.35
    ],
    "cistern": [
      -6.125,
      -1.05,
      -3.25,
      6.95
    ],
    "hatch": [
      -5.45,
      5.4,
      -4.55,
      6.3
    ],
    "garden_steps": [
      -10.75,
      0.8,
      -6.25,
      2.4
    ]
  },
  "clothes_lines": {
    "posts": [
      [
        -1.8,
        0.3
      ],
      [
        -1.8,
        5.0
      ]
    ],
    "arm": 1.25,
    "lines": 6,
    "spacing": 0.25,
    "note": "Lines run N-S between two T-posts on base plates on the terrace slab, east of the cistern (no fixing into the cistern roof). Retractable stainless 316, pull in before north wind."
  },
  "stair_landing": [
    18.0,
    0.2,
    19.3,
    1.4
  ],
  "stair_bottom_landing": [
    18.05,
    5.565,
    19.3,
    6.77
  ],
  "double_height_rects": [
    [
      0.1,
      0.02,
      7.95,
      6.88
    ],
    [
      19.3,
      0.2,
      24.88,
      6.88
    ],
    [
      18.0,
      5.565,
      19.3,
      6.9
    ]
  ],
  "roof_only_rects": [],
  "foyer_void": [
    19.3,
    0.2,
    24.88,
    6.88
  ],
  "stair_start_void": [
    18.0,
    5.565,
    19.3,
    6.9
  ],
  "north_privacy_windows": [
    {
      "id": "north-kitchen-2",
      "room": "kitchen",
      "floor": 0,
      "x0": 1.7,
      "x1": 2.0,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-kitchen-5",
      "room": "kitchen",
      "floor": 0,
      "x0": 5.7,
      "x1": 6.0,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-bath-1",
      "room": "bath",
      "floor": 0,
      "x0": 9.45,
      "x1": 9.75,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": true,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-ensuite-1",
      "room": "ensuite",
      "floor": 0,
      "x0": 10.95,
      "x1": 11.25,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": true,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-bed1-1",
      "room": "bed1",
      "floor": 0,
      "x0": 12.615,
      "x1": 13.185,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-bed1-2",
      "room": "bed1",
      "floor": 0,
      "x0": 13.815,
      "x1": 14.385,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-bed2-1",
      "room": "bed2",
      "floor": 0,
      "x0": 15.615,
      "x1": 16.185,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-bed2-2",
      "room": "bed2",
      "floor": 0,
      "x0": 16.815,
      "x1": 17.385,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-library-1",
      "room": "library",
      "floor": 1,
      "x0": 12.5,
      "x1": 12.8,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-library-2",
      "room": "library",
      "floor": 1,
      "x0": 13.6,
      "x1": 13.9,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-library-3",
      "room": "library",
      "floor": 1,
      "x0": 14.7,
      "x1": 15.0,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-library-4",
      "room": "library",
      "floor": 1,
      "x0": 16.5,
      "x1": 16.8,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-library-5",
      "room": "library",
      "floor": 1,
      "x0": 17.3,
      "x1": 17.6,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-kitchen-upper-1",
      "room": "kitchen",
      "floor": 1,
      "x0": 0.5,
      "x1": 0.8,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-kitchen-upper-2",
      "room": "kitchen",
      "floor": 1,
      "x0": 5.7,
      "x1": 6.0,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-patio-1",
      "room": "patio",
      "floor": 0,
      "x0": -1.35,
      "x1": -1.05,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-patio-upper-1",
      "room": "patio",
      "floor": 1,
      "x0": -1.35,
      "x1": -1.05,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    },
    {
      "id": "north-patio-upper-2",
      "room": "patio",
      "floor": 1,
      "x0": -4.95,
      "x1": -4.65,
      "y": 6.945,
      "sill": 0.95,
      "height": 1.25,
      "obscure": false,
      "operation": "SIDEHUNG_RESTRICTED"
    }
  ],
  "north_window_note": "Todos os vãos norte: 0,30 × 1,25 m, peitoril a 0,95 m do respetivo piso.",
  "upper_envelope_rects": [
    [
      7.95,
      -0.11,
      25.01,
      7.01
    ]
  ],
  "roof_technical_rects": [
    [
      25.01,
      0,
      32.0,
      6.9
    ]
  ],
  "foyer_screen": {
    "rect": [
      19.3,
      1.4,
      19.65,
      5.565
    ],
    "depth_m": 0.35,
    "height_mode": "two_storeys",
    "base_z": 0,
    "top_z": 5.42,
    "height_status": "approved_clear_heights",
    "open_back": true,
    "note": "Estante vazada junto à escada: filtro visual nos dois pisos, sem fundo opaco. Um corrimão do lado da estante, com eventual integração a desenvolver; proteção independente dos livros."
  },
  "section_study": {
    "floor_to_floor": 2.82,
    "roof_soffit": 5.62,
    "ground_clear_height": 2.5,
    "upper_clear_height": 2.5,
    "note": "Proposta H1: cobertura e instalações superiores sobem 0,20 m; cálculo estrutural pendente."
  },
  "entry_route": [
    [
      26.7,
      6.15
    ],
    [
      24.25,
      6.15
    ],
    [
      24.25,
      0.73
    ],
    [
      17.2,
      0.73
    ]
  ],
  "south_canopy": {
    "rect": [
      -6.25,
      -1.61,
      32.0,
      -0.11
    ],
    "projection_m": 1.5,
    "top_z": 2.82,
    "accessible": true,
    "note": "Troço central convertido em varanda; extremos mantidos como pala."
  },
  "steel_columns": {
    "profile": "IPN220",
    "depth_m": 0.22,
    "width_m": 0.098,
    "web_m": 0.0081,
    "flange_m": 0.0122,
    "root_radius_m": 0.0081,
    "edge_radius_m": 0.0049,
    "flange_slope": 0.14,
    "south_axis_y": 0.081,
    "north_axis_y": 6.819,
    "note": "IPN220 aparentes pelo interior, banzos paralelos à fachada; recortes exteriores eliminados.",
    "source": "https://constructalia.arcelormittal.com/files/IPN--327c92df63a68371bff4a9117a829cb8.pdf",
    "rotation_deg": 90
  },
  "area_review": {
    "ground_m2": 181.7615,
    "upper_m2": 82.236,
    "total_m2": 263.9975,
    "target_m2": 500.0,
    "excess_m2": null,
    "within_target": null,
    "regulatory_total_m2": null,
    "constraint_source": "PDM art. 73.º, n.º 1, al. a); confirmado em reunião na Câmara",
    "method": "Área geométrica do volume principal: inclui caixa de escada; exclui palas e coberturas abertas. Quadro de áreas de licenciamento, incluindo anexos e exteriores cobertos, por fechar.",
    "balcony_open_area_m2": 36.075,
    "garage_terrace_open_area_m2": 49.626
  },
  "envelope": {
    "south_outer": -0.11,
    "south_inner": 0.02,
    "north_inner": 6.88,
    "north_outer": 7.01,
    "west_inner": 0.1,
    "east_inner": 24.88,
    "note": "Painéis contínuos por fora da estrutura; sem reservas abertas para pilares."
  },
  "ceilings": {
    "ground_z": 2.5,
    "upper_z": 5.32,
    "thickness_m": 0.025,
    "ground_rect": [
      7.95,
      1.33,
      18.05,
      6.88
    ],
    "upper_rect": [
      7.95,
      0.02,
      18.0,
      6.88
    ],
    "note": "H1: 2,50 m livres nos dois pisos."
  },
  "thermal_connections": {
    "status": "schematic_not_sized",
    "note": "Estrutura aquecida termina pelo interior. Pala e coberturas baixas em estrutura exterior separada; ligações com corte térmico representadas como reservas, a calcular.",
    "source": "https://www.schoeck.com/en-us/canopy-beam-products"
  },
  "gallery_kitchen_opening": {
    "rect": [
      7.9,
      0.2,
      8.2,
      1.4
    ],
    "bottom_z": 2.82,
    "top_z": 5.12,
    "guard_height_m": 1.1,
    "note": "Extremo poente aberto para o vazio da cozinha; guarda no bordo, sem porta."
  },
  "east_foyer_window": {
    "x": 24.945,
    "y0": 0.2,
    "y1": 1.4,
    "bottom_z": 2.92,
    "top_z": 5.32,
    "note": "Janela fixa sobre o vazio do foyer, voltada à cobertura do estacionamento; não há passadiço nem acesso."
  },
  "library_module": {
    "width_m": 0.7,
    "depth_m": 0.45,
    "height_m": 2.3,
    "shelf_pitch_m": 0.36
  },
  "site_revision": {
    "patio_roof": "Open beams only; kiwi or grape support",
    "podium": "Continuous side walls down to surveyed terrain",
    "south_green_screen": "Independent 2.50 m climbing screen along surveyed south edge, 0.40 m inside boundary; illustrative planting",
    "revision": "H2 · duas janelas verticais por quarto · proposta 26 outubro",
    "paving": "Terraço ao nível do piso 0 contínuo até à extremidade do estacionamento. Pátio alinhado com o embasamento da casa a norte e a sul; sem avanço norte de 0,34 m.",
    "outdoor_living": "Mesa com oito cadeiras; trepadeiras sobre o pátio e em painéis na frente sul."
  },
  "exterior_paving": {
    "south_terrace": [
      0,
      -1.75,
      32.0,
      -0.11
    ],
    "west_patio": [
      -6.25,
      -1.75,
      0,
      7.01
    ],
    "parking": [
      25.01,
      -0.11,
      32.0,
      7.01
    ],
    "note": "Terraço ao nível do piso 0 contínuo até à extremidade do estacionamento. Pátio alinhado com o embasamento da casa a norte e a sul; sem avanço norte de 0,34 m."
  },
  "outdoor_living": {
    "table_center": [
      -3.2,
      3.1
    ],
    "table_size": [
      1.05,
      2.4
    ],
    "table_height": 0.75,
    "patio_floor_z": -0.04,
    "seats": 8,
    "pergola_leaf_rect": [
      -6.05,
      0.35,
      -0.2,
      6.55
    ],
    "pergola_leaf_z": 2.88,
    "patio_planters": [
      [
        -5.9,
        6.55,
        -4.3,
        6.95
      ],
      [
        -2.9,
        6.55,
        -1.3,
        6.95
      ]
    ],
    "south_bays": [
      [
        0.6,
        3.3
      ],
      [
        8.6,
        11.2
      ],
      [
        15.8,
        17.8
      ],
      [
        22.4,
        24.5
      ]
    ],
    "south_planter_y": [
      -1.75,
      -1.35
    ],
    "south_trellis_y": -1.53,
    "south_trellis_top": 2.7,
    "planting": "Kiwi / videira: folhas e ramos individuais, crescimento ilustrativo adaptado da R10.",
    "circulation": "Mesa e oito cadeiras afastadas da entrada da cozinha; floreiras sul deixam 1,24 m até à fachada e passagens entre painéis."
  },
  "ventilation": {
    "status": "Estudo de implantação; caudais, ruído, admissão de ar e dimensionamento por desenvolver.",
    "roof_top_z": 5.9172,
    "outlet_z": 6.75,
    "cap_z": 6.88,
    "circuits": [
      {
        "id": "extract-kitchen",
        "label": "Exaustão da cozinha",
        "xy": [
          6.25,
          4.8
        ],
        "diameter": 0.25,
        "bottom_z": 1.84,
        "floor": 0,
        "room": "kitchen"
      },
      {
        "id": "extract-storage",
        "label": "Extração dos arrumos / tanque",
        "xy": [
          8.88,
          3.05
        ],
        "diameter": 0.125,
        "bottom_z": 2.28,
        "floor": 0,
        "room": "laundry"
      },
      {
        "id": "extract-bath",
        "label": "Extração do banho comum",
        "xy": [
          9.48,
          6.55
        ],
        "diameter": 0.15,
        "bottom_z": 2.28,
        "floor": 0,
        "room": "bath"
      },
      {
        "id": "extract-wc",
        "label": "Extração do WC",
        "xy": [
          11.44,
          3.15
        ],
        "diameter": 0.125,
        "bottom_z": 2.28,
        "floor": 0,
        "room": "wc"
      },
      {
        "id": "extract-suite",
        "label": "Extração do banho da suite",
        "xy": [
          11.44,
          4.64
        ],
        "diameter": 0.15,
        "bottom_z": 2.28,
        "floor": 0,
        "room": "ensuite"
      },
      {
        "id": "extract-upper",
        "label": "Extração do banho superior",
        "xy": [
          10.12,
          6.55
        ],
        "diameter": 0.15,
        "bottom_z": 5.0600000000000005,
        "floor": 1,
        "room": "bath-up"
      }
    ],
    "note": "Duas saídas na cobertura: exaustor da cozinha independente e extração central dos quatro banhos/WC e arrumos. Ramais comuns acima do teto, com regulação de caudais e controlo acústico por dimensionar. Sem ligações de combustão, esgoto ou secadora.",
    "source": "https://assets.aldes.fr/assets/docsFR/easyhome-doc-technique.pdf",
    "shared_outlet_xy": [
      10.15,
      5.27
    ],
    "shared_diameter": 0.2,
    "manifold_bottom_z": 5.365,
    "manifold_height": 0.06,
    "fan_rect": [
      9.86,
      4.98,
      10.44,
      5.56
    ]
  },
  "upper_cut_plan": {
    "floor_z": 2.82,
    "cut_z": 4.17,
    "note": "Corte horizontal do IFC a 1,35 m sobre o piso 1; vazios sem pavimento. Escada inferior apenas em projeção tracejada."
  },
  "core_joinery": {
    "rect": [
      7.95,
      2.13,
      8.65,
      6.88
    ],
    "module_width_m": 0.7,
    "module_depth_m": 0.7,
    "bays_y": [
      2.3,
      3.0,
      3.7,
      4.5,
      5.2,
      5.9
    ],
    "infills_y": [
      [
        2.13,
        2.3
      ],
      [
        4.4,
        4.5
      ],
      [
        6.6,
        6.88
      ]
    ],
    "upper_return_y": [
      1.9,
      2.13
    ],
    "note": "Seis módulos 70 × 70 por piso, portas a toda a altura. Piso 0 abre para a cozinha; piso 1 tem duas frentes, para o vazio da cozinha e para WC/rouparia. Sem parede opaca atrás da frente da cozinha; portas fechadas preservam privacidade. Acesso quotidiano superior pelo núcleo, sem ponte sobre o vazio."
  },
  "upper_canopies": {
    "south_projection_m": 1.2,
    "west_projection_m": 0.6,
    "soffit_z": 5.62,
    "thickness_m": 0.03,
    "accessible": false,
    "study": "solar-study.json",
    "status": "Preliminary irradiation-based choice; wind, connections and thermal simulation pending"
  },
  "green_roof": {
    "type_name": "CG-EXT-01 · cobertura quente extensiva sobre OSB",
    "source": "https://zinco-greenroof.com/sites/default/files/2024-10/Zinco_Extensive_Green_Roofs_0.pdf",
    "detail": "Sedum Carpet, page 9; adapted substrate 100 mm instead of 60 mm",
    "deck_m": 0.022,
    "avcl_m": 0.002,
    "insulation_min_m": 0.2,
    "slope": 0.02,
    "waterproof_m": 0.002,
    "protection_m": 0.005,
    "drainage_m": 0.025,
    "filter_m": 0.001,
    "substrate_m": 0.1,
    "edge_clear_m": 0.5,
    "parapet_top_z": 6.26,
    "note": "Vegetação baixa, acesso só para manutenção. OSB/4 de 22 mm é reserva geométrica, não verificação estrutural. Isolamento contínuo por cima do suporte; espessura e fixação a dimensionar. Sem betonilha pesada.",
    "saturated_green_system_kg_m2": 150,
    "design_reserve_above_deck_kg_m2": 200,
    "load_note": "Estimativa da adaptação: 100 mm de substrato a 1400 kg/m³ (84 kg/m² / 60 mm no detalhe) + 10 kg/m² de drenagem/proteção = 150 kg/m², sem vegetação. Reserva de coordenação 200 kg/m² acima do OSB; não inclui aço, OSB, manutenção, vento, neve nem empoçamento. Não é capacidade resistente."
  },
  "library_closure": {
    "east_x": 17.9,
    "west_x": 8.19,
    "door_y": [
      0.2,
      1.4
    ],
    "door_clear_m": 1.2,
    "door_open_rect": [
      17.78,
      1.44,
      17.83,
      2.64
    ],
    "door_closed_rect": [
      17.86,
      0.2,
      17.91,
      1.4
    ],
    "note": "Vidro fixo junto ao vazio, porta de correr com compressão de juntas no desembarque; fecho envidraçado na galeria a poente. Ligações ao teto e encontros selados. Isolamento acústico não calculado."
  },
  "upper_core_corner": {
    "rect": [
      7.95,
      1.33,
      9.45,
      2.13
    ],
    "floor": 1,
    "access_side": "north",
    "module_count": 2,
    "note": "Retorno em L do mobiliário do piso 1. Frente sul fixa; duas portas e puxadores voltados para o interior do núcleo."
  },
  "foyer_living": {
    "furniture": [
      {
        "id": "foyer-sofa",
        "label": "Sofá de três lugares",
        "rect": [
          22.6,
          2.0,
          23.55,
          4.6
        ],
        "kind": "sofa",
        "back": "east"
      },
      {
        "id": "foyer-chair-1",
        "label": "Poltrona de leitura",
        "rect": [
          20.15,
          1.65,
          21.0,
          2.5
        ],
        "kind": "chair",
        "back": "west"
      },
      {
        "id": "foyer-chair-2",
        "label": "Poltrona de leitura",
        "rect": [
          20.15,
          4.15,
          21.0,
          5.0
        ],
        "kind": "chair",
        "back": "west"
      },
      {
        "id": "foyer-coffee",
        "label": "Mesa de centro",
        "rect": [
          21.35,
          2.95,
          22.15,
          3.65
        ],
        "kind": "coffee"
      },
      {
        "id": "entry-bench",
        "label": "Banco de entrada / sapatos",
        "rect": [
          20.7,
          6.28,
          21.75,
          6.83
        ],
        "kind": "bench"
      },
      {
        "id": "entry-coats",
        "label": "Armário de casacos",
        "rect": [
          21.85,
          6.28,
          23.45,
          6.83
        ],
        "kind": "coats"
      }
    ],
    "routes": [
      [
        23.65,
        0.13,
        24.85,
        5.55
      ],
      [
        19.65,
        0.13,
        24.85,
        1.33
      ],
      [
        19.65,
        5.05,
        23.65,
        6.25
      ],
      [
        19.3,
        5.565,
        20.5,
        6.765
      ]
    ],
    "note": "A terceira faixa admite arrumação na margem norte apenas; aproximação à escada por y=5,565–6,265."
  },
  "west_shading": {
    "x": -0.14,
    "y0": 0.2,
    "y1": 6.8,
    "modules": 6,
    "lower_z": 2.94,
    "upper_z": 5.54,
    "default": "retracted",
    "note": "Estores exteriores ZIP em seis módulos acima da pérgula, recolhidos no estado normal. Fechar para proteção ao sol de poente; retração por vento conforme fabricante. Desempenho térmico por simular."
  },
  "purge_vents": {
    "sill_z": 4.72,
    "height_m": 0.34,
    "south_bays": [
      [
        1.0,
        2.1
      ],
      [
        4.8,
        5.9
      ],
      [
        20.7,
        21.8
      ],
      [
        22.3,
        23.4
      ]
    ],
    "note": "Bandeiras superiores motorizadas para ventilação natural, com comando acessível e sensor de chuva/vento. Caudal não dimensionado; não substituem ventilação higiénica."
  },
  "garden_connection": {
    "enabled": true,
    "compact": true,
    "stair_y": [
      -1.55,
      -0.35
    ],
    "start_x": -6.25,
    "going": 0.28,
    "top_z": -0.04,
    "note": "Escada pequena de 1,20 m no canto sudoeste; sem rampa."
  },
  "south_balcony": {
    "rect": [
      7.95,
      -1.61,
      32.0,
      -0.11
    ],
    "floor": 1,
    "guard_height": 1.1,
    "door_x": [
      16.35,
      17.65
    ],
    "door_y": -0.045,
    "note": "Varanda alinhada com o módulo interior; acesso pela galeria. Estrutura, drenagem e ligações por dimensionar."
  },
  "garage_terrace": {
    "rect": [
      25.03,
      -0.11,
      32.0,
      7.01
    ],
    "access": "Via south balcony; east foyer window stays fixed"
  },
  "barbecue": {
    "rect": [
      -2.65,
      0.02,
      -0.12,
      0.78
    ],
    "top_z": 0.9,
    "grill_rect": [
      -2.42,
      0.1,
      -1.72,
      0.7
    ],
    "flue_xy": [
      -1.85,
      0.4
    ],
    "clear_plant_rect": [
      -2.95,
      -0.1,
      -1.2,
      1.15
    ]
  },
  "mesh_guards": {
    "reference": "https://www.carlstahl-architektura.cz/reference-pavlacove-balkony-v-bytovem-dome-v-malesicich/",
    "cable_diameter_m": 0.002,
    "nominal_mesh_m": 0.08,
    "height_m": 1.1,
    "note": "Adaptação geométrica de rede inox X-TEND sobre cabos de bordo; pré-tensão, postes e ancoragens por dimensionar."
  },
  "landscape_terraces": [
    {
      "id": "south-0-0",
      "rect": [
        -6.0,
        -4.5,
        2.0,
        -2.7
      ]
    },
    {
      "id": "south-0-1",
      "rect": [
        -6.0,
        -6.5,
        2.0,
        -4.7
      ]
    },
    {
      "id": "south-1-0",
      "rect": [
        2.3,
        -4.5,
        10.3,
        -2.7
      ]
    },
    {
      "id": "south-1-1",
      "rect": [
        2.3,
        -6.5,
        10.3,
        -4.7
      ]
    },
    {
      "id": "south-2-0",
      "rect": [
        10.6,
        -4.5,
        18.6,
        -2.7
      ]
    },
    {
      "id": "south-2-1",
      "rect": [
        10.6,
        -6.5,
        18.6,
        -4.7
      ]
    },
    {
      "id": "west-1",
      "rect": [
        -17.0,
        -6.5,
        -11.0,
        -2.9
      ]
    },
    {
      "id": "west-2",
      "rect": [
        -17.0,
        0.1,
        -11.0,
        3.0
      ]
    },
    {
      "id": "west-3",
      "rect": [
        -17.0,
        3.3,
        -7.0,
        5.6
      ]
    }
  ],
  "rainwater": {
    "cistern_xy": [
      -18.0,
      4.5
    ],
    "usable_m3": 5.0,
    "inlet_z": -3.3,
    "overflow_z": -3.35,
    "bottom_z": -4.35,
    "attenuation_rect": [
      -22.0,
      -5.5,
      -18.0,
      -3.5
    ],
    "attenuation_invert_z": -4.95,
    "attenuation_void_m3": 6.08,
    "note": "Reserva: cisterna de rega 5 m³ e retenção 6,08 m³. Infiltração condicionada a ensaio e geotecnia; descarga final e emergência por validar, sem ligação assumida à rede pública."
  },
  "north_patio_screen": {
    "rect": [
      -6.25,
      6.88,
      0,
      7.01
    ],
    "top_z": 5.62,
    "note": "Prolongamento da fachada norte até ao fim da pérgula para proteger a zona exterior; estrutura e fundação por dimensionar."
  },
  "gallery_access": {
    "date": "2026-10-26",
    "base_revision": "r11-e16-2026-10-25",
    "min_clear_width_m": 0.9,
    "threshold_upstand_m": 0,
    "pairs": [
      {
        "id": "p0-a",
        "floor": 0,
        "x0": 8.2,
        "x1": 11.7
      },
      {
        "id": "p0-b",
        "floor": 0,
        "x0": 12.25,
        "x1": 14.85
      },
      {
        "id": "p0-c",
        "floor": 0,
        "x0": 15.15,
        "x1": 17.75
      },
      {
        "id": "p0-foyer-a",
        "floor": 0,
        "x0": 19.85,
        "x1": 22.175
      },
      {
        "id": "p0-foyer-b",
        "floor": 0,
        "x0": 22.175,
        "x1": 24.5
      },
      {
        "id": "p1-a",
        "floor": 1,
        "x0": 8.25,
        "x1": 11.85
      },
      {
        "id": "p1-b",
        "floor": 1,
        "x0": 12.15,
        "x1": 14.85
      }
    ],
    "fixed": [
      [
        0,
        14.85,
        15.15
      ],
      [
        1,
        11.85,
        12.15
      ],
      [
        1,
        14.85,
        16.35
      ],
      [
        1,
        17.65,
        18.85
      ]
    ],
    "note": "Corridor and ground foyer glazing lowered to floor; seven new sliding pairs plus existing balcony door. Fixed portions at columns and stair remain non-passable. Flush tracks and exterior drainage require supplier detailing.",
    "source": "https://diariodarepublica.pt/dr/legislacao-consolidada/decreto-lei/2006-108253479"
  },
  "habitability": {
    "id": "H2",
    "status": "Proposta de trabalho; não publicada",
    "roof_raise_m": 0.2,
    "turning_circles": [
      {
        "id": "bath",
        "xy": [
          9.55,
          4.25
        ],
        "radius": 0.75
      },
      {
        "id": "bed1",
        "xy": [
          13.55,
          4.15
        ],
        "radius": 0.75
      },
      {
        "id": "bed2",
        "xy": [
          16.55,
          4.15
        ],
        "radius": 0.75
      },
      {
        "id": "kitchen",
        "xy": [
          4.6,
          3.45
        ],
        "radius": 0.75
      }
    ],
    "transfer_rect": [
      8.65,
      5.7,
      9.85,
      6.5
    ]
  }
}