.presence-opening{border-bottom:1px solid var(--ink);padding:clamp(1.6rem,3vw,3rem) clamp(1rem,3vw,3rem)}
.presence-opening h1{font-size:clamp(3.2rem,6vw,6.5rem);margin:1rem 0}
.presence-opening .page-intro{max-width:72ch;margin:.8rem 0 0}
.presence-tool{display:grid;grid-template-columns:minmax(280px,35%) minmax(0,65%);border-bottom:1px solid var(--ink);background:var(--paper)}
.presence-controls{padding:clamp(1.5rem,3.5vw,4rem);border-right:1px solid var(--ink)}
.presence-controls h2,.presence-reading h2,.presence-method h2{font-size:clamp(2rem,4vw,4.5rem);line-height:1.02;letter-spacing:-.055em;font-weight:500;margin:1.2rem 0 2rem}
.presence-fields{display:grid;gap:1.3rem}.presence-fields label,.presence-dimensions label{display:grid;gap:.4rem;font:700 .82rem/1.4 'Courier New',monospace;color:var(--system-blue)}
.presence-fields select,.presence-dimensions input{box-sizing:border-box;width:100%;min-height:48px;padding:.7rem .8rem;border:1px solid var(--ink);border-radius:0;background:var(--paper);color:var(--ink);font:400 1rem/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif}
.presence-fields select:focus-visible,.presence-dimensions input:focus-visible,.presence-next a:focus-visible,.presence-source summary:focus-visible{outline:2px solid var(--system-blue);outline-offset:3px}
.presence-dimensions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;margin:1.5rem 0 0;padding:1.3rem 0 0;border:0;border-top:1px solid var(--ink)}
.presence-dimensions legend{padding:0;font:700 .82rem/1.4 'Courier New',monospace;color:var(--system-blue)}
.presence-dimensions input[readonly]{background:#e9e6df;color:#434343}.presence-input-note{font-size:.85rem;line-height:1.45;margin:1rem 0 0}
.presence-output{min-width:0;padding:clamp(1.5rem,3.5vw,4rem);background:#e9e6df;display:flex;flex-direction:column;justify-content:center}
.presence-output-header,.presence-output-foot{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;font:700 .8rem/1.4 'Courier New',monospace}
.presence-output-header{border-bottom:1px solid var(--ink);padding-bottom:1rem}.presence-output-header strong{font-size:clamp(2rem,4vw,4.5rem);font-weight:500;letter-spacing:-.05em;color:var(--ink)}
.presence-room-diagram{--pointer-x:50%;--pointer-y:50%;box-sizing:border-box;position:relative;max-width:100%;margin:2rem auto;border:2px solid var(--ink);background:#f7f4ef;overflow:hidden;min-height:110px}
.room-grid{position:absolute;inset:0;background-image:linear-gradient(#173f6b20 1px,transparent 1px),linear-gradient(90deg,#173f6b20 1px,transparent 1px);background-size:20px 20px}
.room-axis{position:absolute;z-index:2;pointer-events:none}.room-axis-x{top:var(--pointer-y);left:0;width:100%;border-top:1px dashed #173f6b80}.room-axis-y{left:var(--pointer-x);top:0;height:100%;border-left:1px dashed #173f6b80}
.room-candle{position:absolute;z-index:4;top:50%;left:50%;transform:translate(-50%,-50%);width:86px;height:86px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--ink);color:var(--paper);font:700 .65rem/1.4 'Courier New',monospace;letter-spacing:.08em;box-shadow:0 0 0 1px var(--paper)}.room-candle b{font:500 1.9rem/1 'Helvetica Neue',Helvetica,Arial,sans-serif}
.room-field{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);width:70%;aspect-ratio:1;border:1px solid var(--system-blue);border-radius:50%;box-shadow:0 0 0 28px #173f6b09,0 0 0 56px #173f6b06;opacity:.55;pointer-events:none}
[data-presence="INTIMATE"] .room-field{border-style:dotted;opacity:.28}[data-presence="AMBIENT"] .room-field{border-style:dashed;opacity:.5}[data-presence="EXPANSIVE"] .room-field{border-style:solid;opacity:.7}
.room-coordinate{position:absolute;z-index:5;left:.75rem;bottom:.75rem;background:var(--paper);padding:.3rem .45rem;font:700 .68rem/1.2 'Courier New',monospace;color:var(--system-blue)}
.presence-output-foot{border-top:1px solid var(--ink);padding-top:1rem}.presence-diagram-note{max-width:65ch;font-size:.85rem;line-height:1.5;margin:1.3rem 0 0}
.presence-reading{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,6rem);padding:clamp(2rem,5vw,6rem);border-bottom:1px solid var(--ink)}
.presence-reading>div>p:not(.section-index,.kicker){font-size:1rem;line-height:1.55;max-width:50ch}.presence-symbols{display:flex;gap:.5rem;margin:0 0 2rem}.presence-symbols img{width:clamp(30px,4vw,60px);height:clamp(30px,4vw,60px);object-fit:contain}
.presence-scale ol{list-style:none;margin:1rem 0 1.3rem;padding:0;border-top:1px solid var(--ink)}.presence-scale li{display:grid;grid-template-columns:8rem 1fr;gap:1rem;padding:1.15rem .75rem;border-bottom:1px solid #aaa8a1;font-size:.95rem;line-height:1.45}.presence-scale li b{font:700 .82rem/1.45 'Courier New',monospace}.presence-scale li.is-current{background:var(--system-blue);color:var(--paper)}.presence-scale>p:last-child{line-height:1.55;max-width:52ch}
.presence-method{max-width:1100px;margin:0 auto}.presence-method>p{max-width:72ch;line-height:1.6}.presence-source{margin:2rem 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}.presence-source summary{cursor:pointer;padding:1.2rem 0;font:700 .85rem/1.4 'Courier New',monospace}.presence-source img{display:block;width:min(100%,900px);height:auto;margin:0 auto 2rem}.presence-next{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}.presence-next a{padding:.7rem 1rem;border:1px solid var(--ink);font:700 .78rem/1.4 'Courier New',monospace;text-decoration:none}.presence-next a:hover{background:var(--system-blue);color:var(--paper)}
@media (hover:hover) and (prefers-reduced-motion:no-preference){.presence-room-diagram:hover .room-coordinate{transform:translate(2px,-1px)}.presence-reading h2:hover{text-shadow:2px 0 #173f6b50,-2px 0 #9e3f0050}}
@media(max-width:900px){.presence-tool{grid-template-columns:1fr}.presence-controls{border-right:0;border-bottom:1px solid var(--ink)}.presence-room-diagram{margin:1.5rem auto}.presence-reading{grid-template-columns:1fr}}
@media(max-width:600px){.presence-controls,.presence-output,.presence-reading{padding:1.5rem 1rem}.presence-dimensions{gap:.4rem}.presence-dimensions input{padding:.55rem}.presence-output-header,.presence-output-foot{display:block}.presence-output-header strong{display:block;margin-top:.4rem}.presence-output-foot span{display:block}.presence-scale li{grid-template-columns:1fr;gap:.3rem}}
@media(max-width:600px){.presence-opening{padding:1.4rem 1rem}.presence-opening h1{font-size:clamp(2.7rem,11vw,4rem);margin:.8rem 0}.presence-opening .page-intro{font-size:1rem}}
@media(prefers-reduced-motion:reduce){.room-axis-x{top:50%}.room-axis-y{left:50%}.presence-room-diagram *, .presence-reading *{animation:none!important;transition:none!important}}
.apartment-tool{border-bottom:1px solid var(--ink);background:var(--paper)}
.apartment-head{display:grid;grid-template-columns:minmax(260px,35%) 1fr;gap:clamp(1.5rem,4vw,4rem);padding:clamp(1.5rem,3vw,3rem);border-bottom:1px solid var(--ink)}
.apartment-head h2{font-size:clamp(2.5rem,4.5vw,5rem);font-weight:500;letter-spacing:-.06em;line-height:1.02;margin:1rem 0}
.apartment-head p:last-child{line-height:1.5;max-width:48ch;margin:0}
.apartment-compositions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-self:center}
.apartment-compositions button{display:flex;align-items:center;justify-content:space-between;gap:.4rem;min-height:58px;padding:.65rem .75rem;border:1px solid var(--system-blue);background:transparent;color:var(--ink);cursor:pointer;font:700 .9rem/1 'Courier New',monospace;text-align:left}
.apartment-compositions button span{display:flex;gap:.12rem}.apartment-compositions img{display:block;width:clamp(14px,1.6vw,21px);height:clamp(14px,1.6vw,21px);object-fit:contain}
.apartment-compositions button:hover,.apartment-compositions button:focus-visible{outline:2px solid var(--system-blue);outline-offset:2px}
.apartment-compositions button[aria-pressed="true"]{background:var(--system-blue);color:var(--paper)}
.apartment-compositions button[aria-pressed="true"] img{filter:invert(1)}
.apartment-body{display:grid;grid-template-columns:minmax(0,61%) minmax(300px,39%)}
.apartment-plan{position:relative;align-self:start;min-width:0;background:#fff;border-right:1px solid var(--ink)}
.apartment-plan img{display:block;width:100%;height:auto}
.apartment-plan svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.apartment-highlight{fill:transparent;stroke:transparent;stroke-width:3;transition:fill .18s steps(2,end),stroke .18s steps(2,end)}
.apartment-highlight.is-best{fill:#24465c20;stroke:#24465c;stroke-width:4}
.apartment-analysis{padding:clamp(1.4rem,2.5vw,3rem);min-width:0}
.apartment-analysis h3{font-size:clamp(2.4rem,4vw,4.5rem);font-weight:500;letter-spacing:-.055em;line-height:1;margin:.5rem 0 1rem}
.apartment-analysis>p{line-height:1.5}.apartment-analysis .apartment-key{font-size:.85rem;color:var(--muted);margin:1.5rem 0}
.apartment-room-list{list-style:none;margin:1.5rem 0;padding:0;border-top:1px solid var(--ink)}
.apartment-room-list li{display:grid;grid-template-columns:2.2rem minmax(0,1fr) minmax(5rem,.9fr);gap:.6rem;align-items:center;padding:.9rem .35rem;border-bottom:1px solid #aaa8a1;border-left:4px solid transparent;font:700 .76rem/1.4 'Courier New',monospace}
.apartment-room-list li.is-best{border-left-color:var(--system-blue);background:#24465c12}
.apartment-letter{font-size:1.6rem;line-height:1;color:var(--system-blue)}
.apartment-dim small{display:block;font-size:.7rem;font-weight:400;color:var(--muted)}
.apartment-read{text-align:right;text-transform:uppercase;color:var(--system-blue)}
#apartment-summary{font:700 .82rem/1.55 'Courier New',monospace;color:var(--system-blue)}
.apartment-caveat{font-size:.84rem;color:var(--muted);border-top:1px solid #aaa8a1;padding-top:1rem;margin-top:1.5rem}
@media(max-width:1000px){.apartment-head{grid-template-columns:1fr}.apartment-body{grid-template-columns:1fr}.apartment-plan{border-right:0;border-bottom:1px solid var(--ink);max-width:780px;margin:auto}.apartment-analysis{max-width:780px;margin:auto;width:100%;box-sizing:border-box}}
@media(max-width:600px){.apartment-head{padding:1.5rem 1rem}.apartment-compositions{grid-template-columns:repeat(2,minmax(0,1fr))}.apartment-compositions button{min-height:52px}.apartment-analysis{padding:1.5rem 1rem}.apartment-room-list li{grid-template-columns:1.8rem minmax(0,1fr) minmax(5rem,.8fr)}}
@media(prefers-reduced-motion:reduce){.apartment-highlight{transition:none}}

/* Keep the apartment as the primary instrument. The calculator is optional. */
.apartment-head{display:block;padding-bottom:1.25rem}
.apartment-head>div{max-width:65ch}
.apartment-compositions{grid-template-columns:repeat(6,minmax(0,1fr));padding:.8rem clamp(1rem,3vw,3rem);border-bottom:1px solid var(--ink)}
.apartment-compositions button{border-color:color-mix(in srgb,var(--ink) 45%,transparent)}
.apartment-compositions button[aria-pressed="true"]{background:var(--oxide);border-color:var(--oxide);color:var(--paper)}
.apartment-compositions button:hover,.apartment-compositions button:focus-visible{outline-color:var(--oxide)}
.apartment-highlight.is-best{fill:color-mix(in srgb,var(--oxide) 20%,transparent);stroke:var(--oxide)}
.apartment-room-list li.is-best{border-left-color:var(--oxide);background:color-mix(in srgb,var(--oxide) 8%,var(--paper))}
.apartment-room-list li.is-best .apartment-letter,.apartment-room-list li.is-best .apartment-read{color:var(--oxide)}
.presence-calculator{border-bottom:1px solid var(--ink)}
.presence-calculator>summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;cursor:pointer;list-style:none;padding:1.2rem clamp(1rem,3vw,3rem);font:700 .86rem/1.4 'Courier New',monospace;letter-spacing:.04em;color:var(--ink)}
.presence-calculator>summary::-webkit-details-marker{display:none}
.presence-calculator>summary span{font-size:1.4rem;color:var(--system-blue)}
.presence-calculator[open]>summary span{transform:rotate(45deg)}
.presence-calculator>summary:focus-visible{outline:2px solid var(--system-blue);outline-offset:-4px}
.presence-calculator .presence-tool{border-top:1px solid var(--ink);border-bottom:0}
.presence-calculator .presence-controls h2{font-size:clamp(1.8rem,3vw,3rem);margin:.6rem 0 1.2rem}
.presence-calculator .presence-output{justify-content:center}
.presence-calculator .presence-output-header strong{font-size:clamp(2rem,3vw,3rem)}
.presence-dimensions[hidden]{display:none}
.presence-output-foot{margin-top:1.2rem}
@media(max-width:1000px){.apartment-compositions{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.apartment-compositions{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.apartment-compositions button{min-height:48px;padding:.45rem}.apartment-compositions img{width:15px;height:15px}}
