diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..3234aaa --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,590 @@ +/* ============================================================ + SIENA — Design tokens + ============================================================ */ +:root{ + --limestone: #F1E9DA; + --limestone-dim: #E8DDC9; + --paper: #FBF7EE; + --ink: #221C16; + --ink-soft: #4A4038; + --sienna: #9A4A2C; + --sienna-deep: #7A3A22; + --cypress: #3F4A38; + --cypress-deep: #2C3527; + --brass: #A9803F; + --stone-line: #CBBFA6; + + --display: "Fraunces", "Iowan Old Style", serif; + --body: "Inter", -apple-system, "Segoe UI", sans-serif; + + --measure: 62ch; + --arch-radius: 260px 260px 0 0; + --radius-sm: 4px; + + --ease: cubic-bezier(.22,.61,.36,1); +} + +@media (prefers-color-scheme: dark){ + /* Site is intentionally light/warm regardless of system scheme — + the palette itself is the brand, not a mode. */ +} + +*, *::before, *::after{ box-sizing: border-box; } +html{ scroll-behavior: smooth; } +@media (prefers-reduced-motion: reduce){ + html{ scroll-behavior: auto; } + *, *::before, *::after{ + animation-duration: 0.001ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.001ms !important; + scroll-behavior: auto !important; + } +} + +body{ + margin: 0; + background: var(--limestone); + color: var(--ink); + font-family: var(--body); + font-size: 17px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; +} + +img, svg{ display: block; max-width: 100%; } + +a{ color: inherit; text-decoration: none; } + +h1, h2, h3, h4{ + font-family: var(--display); + font-weight: 500; + color: var(--ink); + margin: 0; + line-height: 1.08; + letter-spacing: -0.01em; +} + +p{ margin: 0 0 1em; max-width: var(--measure); } +p:last-child{ margin-bottom: 0; } + +::selection{ background: var(--sienna); color: var(--paper); } + +:focus-visible{ + outline: 2px solid var(--sienna); + outline-offset: 3px; + border-radius: 2px; +} + +.container{ + width: 100%; + max-width: 1180px; + margin: 0 auto; + padding: 0 32px; +} + +@media (max-width: 640px){ + .container{ padding: 0 20px; } +} + +/* ============================================================ + Header / Nav + ============================================================ */ +.site-header{ + position: sticky; + top: 0; + z-index: 50; + background: rgba(241, 233, 218, 0.86); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border-bottom: 1px solid transparent; + transition: border-color .3s var(--ease), box-shadow .3s var(--ease); +} +.site-header.is-scrolled{ + border-bottom-color: var(--stone-line); + box-shadow: 0 8px 24px -20px rgba(34,28,22,0.4); +} +.site-header .container{ + display: flex; + align-items: center; + justify-content: space-between; + height: 84px; +} +.wordmark{ + font-family: var(--display); + font-size: 1.5rem; + font-weight: 600; + letter-spacing: 0.01em; + color: var(--ink); +} +.wordmark span{ color: var(--sienna); } + +.main-nav{ display: flex; align-items: center; gap: 40px; } +.main-nav ul{ + list-style: none; + display: flex; + gap: 32px; + margin: 0; + padding: 0; +} +.main-nav a{ + font-size: 0.95rem; + color: var(--ink-soft); + position: relative; + padding: 4px 0; + transition: color .2s var(--ease); +} +.main-nav a:hover, +.main-nav a[aria-current="page"]{ color: var(--sienna); } +.main-nav a[aria-current="page"]::after{ + content: ""; + position: absolute; + left: 0; right: 0; bottom: -3px; + height: 2px; + background: var(--sienna); +} + +.btn{ + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + padding: 13px 26px; + font-family: var(--body); + font-size: 0.92rem; + font-weight: 500; + border-radius: var(--radius-sm); + border: 1px solid transparent; + cursor: pointer; + transition: background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), transform .15s var(--ease); +} +.btn:active{ transform: translateY(1px); } +.btn-primary{ background: var(--sienna); color: var(--paper); } +.btn-primary:hover{ background: var(--sienna-deep); } +.btn-ghost{ border-color: var(--ink); color: var(--ink); } +.btn-ghost:hover{ background: var(--ink); color: var(--paper); } +.btn-ghost-light{ border-color: rgba(251,247,238,.55); color: var(--paper); } +.btn-ghost-light:hover{ background: var(--paper); color: var(--ink); } + +.nav-toggle{ + display: none; + background: none; + border: none; + cursor: pointer; + padding: 8px; + flex-direction: column; + gap: 5px; +} +.nav-toggle span{ + width: 24px; height: 2px; background: var(--ink); + transition: transform .25s var(--ease), opacity .25s var(--ease); +} +.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform: translateY(7px) rotate(45deg); } +.nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity: 0; } +.nav-toggle[aria-expanded="true"] span:nth-child(3){ transform: translateY(-7px) rotate(-45deg); } + +@media (max-width: 860px){ + .main-nav{ + position: fixed; + inset: 84px 0 0 0; + background: var(--limestone); + flex-direction: column; + align-items: stretch; + padding: 12px 20px 32px; + transform: translateY(-8px); + opacity: 0; + pointer-events: none; + transition: opacity .25s var(--ease), transform .25s var(--ease); + overflow-y: auto; + } + .main-nav.is-open{ + opacity: 1; transform: translateY(0); pointer-events: auto; + } + .main-nav ul{ flex-direction: column; gap: 0; } + .main-nav li{ border-bottom: 1px solid var(--stone-line); } + .main-nav a{ display: block; padding: 16px 4px; font-size: 1.05rem; } + .main-nav .nav-cta{ margin-top: 20px; } + .nav-toggle{ display: flex; } +} + +/* ============================================================ + Hero + ============================================================ */ +.hero{ + position: relative; + overflow: hidden; + background: var(--ink); + color: var(--paper); +} +.hero .container{ + display: grid; + grid-template-columns: 1.05fr 0.95fr; + align-items: center; + gap: 40px; + padding-top: 76px; + padding-bottom: 76px; + min-height: 640px; +} +.hero-eyebrow{ + font-size: 0.95rem; + color: var(--brass); + margin-bottom: 22px; + font-style: italic; + font-family: var(--display); +} +.hero h1{ + font-size: clamp(2.6rem, 5.2vw, 4.4rem); + color: var(--paper); + margin-bottom: 26px; +} +.hero-lede{ + color: rgba(251,247,238,.82); + font-size: 1.1rem; + max-width: 46ch; + margin-bottom: 36px; +} +.hero-actions{ display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 44px; } +.hero-stats{ + display: flex; + gap: 36px; + border-top: 1px solid rgba(251,247,238,.2); + padding-top: 24px; +} +.hero-stats div{ display: flex; flex-direction: column; gap: 4px; } +.hero-stats strong{ + font-family: var(--display); + font-size: 1.6rem; + color: var(--paper); + font-weight: 500; +} +.hero-stats span{ font-size: 0.85rem; color: rgba(251,247,238,.6); } + +.hero-art{ + position: relative; + height: 100%; + min-height: 460px; + display: flex; + align-items: flex-end; +} +.hero-art svg{ width: 100%; height: auto; } + +.hero[data-reveal] .hero-eyebrow, +.hero[data-reveal] h1, +.hero[data-reveal] .hero-lede, +.hero[data-reveal] .hero-actions, +.hero[data-reveal] .hero-stats, +.hero[data-reveal] .hero-art{ + opacity: 0; + transform: translateY(16px); +} +.hero.is-revealed .hero-eyebrow, +.hero.is-revealed h1, +.hero.is-revealed .hero-lede, +.hero.is-revealed .hero-actions, +.hero.is-revealed .hero-stats, +.hero.is-revealed .hero-art{ + opacity: 1; + transform: none; + transition: opacity .8s var(--ease), transform .8s var(--ease); +} +.hero.is-revealed h1{ transition-delay: .08s; } +.hero.is-revealed .hero-lede{ transition-delay: .16s; } +.hero.is-revealed .hero-actions{ transition-delay: .24s; } +.hero.is-revealed .hero-stats{ transition-delay: .32s; } +.hero.is-revealed .hero-art{ transition-delay: .1s; } + +@media (max-width: 900px){ + .hero .container{ grid-template-columns: 1fr; padding-top: 48px; padding-bottom: 48px; min-height: auto; } + .hero-art{ order: -1; min-height: 280px; } + .hero-stats{ flex-wrap: wrap; row-gap: 18px; } +} + +/* ============================================================ + Section rhythm + ============================================================ */ +.section{ padding: 108px 0; } +.section-tight{ padding: 72px 0; } +.section-dark{ background: var(--cypress-deep); color: var(--paper); } +.section-paper{ background: var(--paper); } +@media (max-width: 640px){ + .section{ padding: 68px 0; } + .section-tight{ padding: 52px 0; } +} + +.section-head{ + display: grid; + grid-template-columns: 1.1fr 0.9fr; + gap: 48px; + align-items: end; + margin-bottom: 56px; +} +.section-head h2{ font-size: clamp(1.9rem, 3.2vw, 2.7rem); } +.section-head p{ color: var(--ink-soft); } +.section-dark .section-head p{ color: rgba(251,247,238,.75); } +@media (max-width: 760px){ + .section-head{ grid-template-columns: 1fr; gap: 16px; } +} + +.divider{ + border: none; + border-top: 1px solid var(--stone-line); + margin: 0; +} + +/* ============================================================ + Arch motif — the recurring signature shape + ============================================================ */ +.arch{ + border-radius: var(--arch-radius); + overflow: hidden; +} +.arch-frame{ + border-radius: var(--arch-radius); + border: 1px solid var(--stone-line); + padding: 2px; +} + +/* ============================================================ + Amenity / feature cards + ============================================================ */ +.grid-3{ + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 28px; +} +.grid-2{ + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 28px; +} +@media (max-width: 860px){ + .grid-3{ grid-template-columns: 1fr 1fr; } +} +@media (max-width: 620px){ + .grid-3, .grid-2{ grid-template-columns: 1fr; } +} + +.feature-card{ + background: var(--paper); + border: 1px solid var(--stone-line); + border-radius: var(--arch-radius); + padding: 40px 30px 30px; +} +.feature-card .icon{ margin-bottom: 22px; color: var(--sienna); } +.feature-card h3{ font-size: 1.2rem; margin-bottom: 10px; } +.feature-card p{ color: var(--ink-soft); font-size: 0.96rem; } + +/* ============================================================ + Residence / plan rows + ============================================================ */ +.plan-row{ + display: grid; + grid-template-columns: 1.1fr 0.5fr 0.5fr 0.5fr auto; + align-items: center; + gap: 20px; + padding: 26px 0; + border-top: 1px solid var(--stone-line); +} +.plan-row:last-child{ border-bottom: 1px solid var(--stone-line); } +.plan-row .plan-name{ font-family: var(--display); font-size: 1.15rem; } +.plan-row .plan-meta{ color: var(--ink-soft); font-size: 0.9rem; } +.plan-row .plan-label{ + display: none; + font-size: 0.75rem; + color: var(--brass); + margin-bottom: 3px; +} +.plan-head{ + display: grid; + grid-template-columns: 1.1fr 0.5fr 0.5fr 0.5fr auto; + gap: 20px; + padding-bottom: 14px; + font-size: 0.78rem; + color: var(--brass); +} +@media (max-width: 760px){ + .plan-head{ display: none; } + .plan-row{ grid-template-columns: 1fr; gap: 4px; } + .plan-row .plan-label{ display: block; } + .plan-row a.btn{ margin-top: 12px; width: fit-content; } +} + +/* ============================================================ + Steps (genuine sequence — used only for process flows) + ============================================================ */ +.steps{ + counter-reset: step; + display: grid; + gap: 30px; +} +.step{ + display: grid; + grid-template-columns: 52px 1fr; + gap: 20px; +} +.step::before{ + counter-increment: step; + content: counter(step); + font-family: var(--display); + font-size: 1.3rem; + color: var(--sienna); + border: 1px solid var(--sienna); + width: 52px; height: 52px; + border-radius: 50%; + display: flex; align-items: center; justify-content: center; +} +.step h3{ font-size: 1.05rem; margin-bottom: 6px; } +.step p{ color: var(--ink-soft); font-size: 0.95rem; } + +/* ============================================================ + Forms + ============================================================ */ +.form-card{ + background: var(--paper); + border: 1px solid var(--stone-line); + border-radius: 18px; + padding: 44px; +} +@media (max-width: 640px){ .form-card{ padding: 28px 22px; } } + +.field{ margin-bottom: 24px; } +.field label{ + display: block; + font-size: 0.88rem; + color: var(--ink-soft); + margin-bottom: 8px; +} +.field .hint{ font-size: 0.8rem; color: var(--stone-line); margin-top: 6px; } +.field-row{ display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } +@media (max-width: 560px){ .field-row{ grid-template-columns: 1fr; } } + +input, select, textarea{ + width: 100%; + font-family: var(--body); + font-size: 1rem; + color: var(--ink); + background: var(--limestone); + border: 1px solid var(--stone-line); + border-radius: var(--radius-sm); + padding: 13px 14px; + transition: border-color .2s var(--ease), background .2s var(--ease); +} +input:focus, select:focus, textarea:focus{ + border-color: var(--sienna); + background: var(--paper); + outline: none; +} +textarea{ resize: vertical; min-height: 120px; } + +fieldset{ border: none; padding: 0; margin: 0 0 24px; } +legend{ font-size: 0.88rem; color: var(--ink-soft); margin-bottom: 10px; padding: 0; } +.radio-group{ display: flex; gap: 20px; flex-wrap: wrap; } +.radio-option{ display: flex; align-items: center; gap: 8px; font-size: 0.95rem; } +.radio-option input{ width: auto; } + +.form-status{ + display: none; + margin-top: 22px; + padding: 16px 18px; + border-radius: var(--radius-sm); + background: rgba(63,74,56,0.1); + border: 1px solid var(--cypress); + color: var(--cypress-deep); + font-size: 0.92rem; +} +.form-status.is-visible{ display: block; } + +/* ============================================================ + Quote / testimonial + ============================================================ */ +.quote{ + font-family: var(--display); + font-size: clamp(1.4rem, 2.6vw, 1.9rem); + font-style: italic; + line-height: 1.4; + max-width: 34ch; +} +.quote-attr{ + margin-top: 22px; + font-family: var(--body); + font-style: normal; + font-size: 0.9rem; + color: var(--brass); +} + +/* ============================================================ + CTA band + ============================================================ */ +.cta-band{ + background: var(--sienna); + color: var(--paper); + border-radius: var(--arch-radius); + padding: 64px 56px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 32px; + flex-wrap: wrap; +} +.cta-band h2{ color: var(--paper); font-size: clamp(1.6rem, 3vw, 2.2rem); max-width: 20ch; } +@media (max-width: 640px){ + .cta-band{ padding: 44px 28px; flex-direction: column; align-items: flex-start; } +} + +/* ============================================================ + Footer + ============================================================ */ +.site-footer{ + background: var(--ink); + color: rgba(251,247,238,.7); + padding: 72px 0 32px; +} +.footer-grid{ + display: grid; + grid-template-columns: 1.4fr 1fr 1fr 1fr; + gap: 36px; + padding-bottom: 48px; + border-bottom: 1px solid rgba(251,247,238,.14); +} +.footer-grid h4{ color: var(--paper); font-size: 0.95rem; margin-bottom: 16px; font-family: var(--body); font-weight: 600; } +.footer-grid .wordmark{ color: var(--paper); margin-bottom: 14px; display: block;} +.footer-grid p{ font-size: 0.92rem; } +.footer-links{ list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; font-size: 0.92rem; } +.footer-links a:hover{ color: var(--paper); } +.footer-bottom{ + padding-top: 28px; + display: flex; + justify-content: space-between; + font-size: 0.82rem; + flex-wrap: wrap; + gap: 10px; +} +@media (max-width: 760px){ + .footer-grid{ grid-template-columns: 1fr 1fr; } +} +@media (max-width: 480px){ + .footer-grid{ grid-template-columns: 1fr; } +} + +/* ============================================================ + Page header (interior pages) + ============================================================ */ +.page-hero{ + background: var(--ink); + color: var(--paper); + padding: 64px 0 56px; +} +.page-hero .hero-eyebrow{ margin-bottom: 16px; } +.page-hero h1{ color: var(--paper); font-size: clamp(2.1rem, 4vw, 3rem); } +.page-hero p{ color: rgba(251,247,238,.78); margin-top: 18px; max-width: 56ch; } + +.breadcrumb{ font-size: 0.85rem; color: var(--brass); margin-bottom: 14px; } +.breadcrumb a{ color: rgba(251,247,238,.7); } +.breadcrumb a:hover{ color: var(--paper); } + +/* utility */ +.mt-0{ margin-top: 0 !important; } +.text-center{ text-align: center; } +.visually-hidden{ + position: absolute; width: 1px; height: 1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; +} diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..5c9dafc --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,82 @@ +// SIENA — shared site behavior + +document.addEventListener('DOMContentLoaded', () => { + initHeaderScroll(); + initMobileNav(); + initHeroReveal(); + initForms(); +}); + +/* Give the sticky header a hairline + shadow once the page scrolls. */ +function initHeaderScroll() { + const header = document.querySelector('.site-header'); + if (!header) return; + const setState = () => { + header.classList.toggle('is-scrolled', window.scrollY > 8); + }; + setState(); + window.addEventListener('scroll', setState, { passive: true }); +} + +/* Mobile nav toggle button. */ +function initMobileNav() { + const toggle = document.querySelector('.nav-toggle'); + const nav = document.querySelector('.main-nav'); + if (!toggle || !nav) return; + + toggle.addEventListener('click', () => { + const isOpen = nav.classList.toggle('is-open'); + toggle.setAttribute('aria-expanded', String(isOpen)); + document.body.style.overflow = isOpen ? 'hidden' : ''; + }); + + nav.querySelectorAll('a').forEach((link) => { + link.addEventListener('click', () => { + nav.classList.remove('is-open'); + toggle.setAttribute('aria-expanded', 'false'); + document.body.style.overflow = ''; + }); + }); +} + +/* One orchestrated reveal for the hero on first paint, not per-scroll. */ +function initHeroReveal() { + const hero = document.querySelector('.hero[data-reveal]'); + if (!hero) return; + requestAnimationFrame(() => { + requestAnimationFrame(() => hero.classList.add('is-revealed')); + }); +} + +/* Support + lease inquiry forms: client-side confirmation only. + No backend is wired up — this simulates a submission and shows + the confirmation state so the page is demonstrable end to end. */ +function initForms() { + document.querySelectorAll('form[data-inquiry-form]').forEach((form) => { + const status = form.querySelector('.form-status'); + form.addEventListener('submit', (event) => { + event.preventDefault(); + if (!form.checkValidity()) { + form.reportValidity(); + return; + } + const submitBtn = form.querySelector('button[type="submit"]'); + const originalLabel = submitBtn.textContent; + submitBtn.disabled = true; + submitBtn.textContent = 'Sending…'; + + window.setTimeout(() => { + form.reset(); + submitBtn.disabled = false; + submitBtn.textContent = originalLabel; + if (status) { + status.textContent = form.dataset.successMessage || + "Thank you — we've received your message and will be in touch shortly."; + status.classList.add('is-visible'); + status.setAttribute('tabindex', '-1'); + status.focus(); + } + }, 650); + }); + }); +} diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..63a9e79 --- /dev/null +++ b/contact.html @@ -0,0 +1,139 @@ + + + + + +Visit & Contact — Siena + + + + + + + + + + + +
+ +
+
+ +

Visit Siena

+

Our leasing office sits just off the courtyard entrance. Walk-ins are welcome, but a scheduled tour means someone will actually be free to show you around.

+
+
+ +
+
+
+ +
+
+ +
+ +
+
+

Address

+

820 SW Ankeny Street
Portland, OR 97205

+
+
+

Leasing office hours

+

Mon–Sat, 9am–6pm
Sun, 11am–4pm

+
+
+
+ +
+

Reach us directly

+
+
+

Leasing inquiries

+

(503) 555-0142
leasing@sienapdx.example

+ Start a Lease Inquiry +
+
+

Current residents

+

For maintenance and account questions, use the resident support form — it routes faster than email.

+ Go to Resident Support +
+
+

After-hours emergency

+

(503) 555-0199 — for anything that can't wait until morning.

+
+
+
+ +
+
+
+ +
+ + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..5249076 --- /dev/null +++ b/index.html @@ -0,0 +1,259 @@ + + + + + +Siena — Residences in Portland, Oregon + + + + + + + + + + + +
+ +
+
+
+

Now leasing — Portland, Oregon

+

An address built the way old cities are built — slowly, and with care.

+

Siena is a 128-residence community drawn from the brickwork, arcades, and courtyards of the Tuscan city it's named for, reworked for how people actually live today.

+ +
+
128Residences
+
9Stories
+
24/7On-site concierge
+
+
+ +
+
+ +
+
+
+

Every good city has a Campo.

+

In Siena, Italy, the Piazza del Campo is where the city actually happens — the square everyone crosses, meets in, and lingers. Our courtyard borrows the idea, not the postcard.

+
+
+
+ + + + + + + + + + + + +
+
+
+ "We moved in for the apartment and stayed for the courtyard. There's always someone reading, or the dog, or a birthday — it's the closest thing our block has to a piazza." +
— Nora F., resident since 2022
+
+ Explore the Amenities +
+
+
+
+ +
+
+
+

Designed for the hours outside your door.

+

A short list of what's just downstairs — the fuller one lives on the residences page.

+
+
+
+ +

Courtyard & loggia

+

A shared arcade and lawn at the center of the building, open from sunrise to midnight.

+
+
+ +

Rooftop terrace

+

West-facing views, communal grills, and a fireplace for the nine months it isn't sunny.

+
+
+ +

Bike & gear room

+

Secure storage, a repair stand, and direct courtyard access for muddy boots.

+
+
+
+
+ +
+
+
+

Six floor plans, one address.

+

From a well-proportioned studio to a top-floor two-bedroom with its own loggia.

+
+
+ PlanBedsBathsSq. Ft. +
+
+
PlanThe Cortile
Studio
+
BedsStudio
+
Baths1
+
Sq. Ft.512
+ Inquire +
+
+
PlanThe Duomo
One bedroom
+
Beds1
+
Baths1
+
Sq. Ft.701
+ Inquire +
+
+
PlanThe Torre
Two bedroom, corner
+
Beds2
+
Baths2
+
Sq. Ft.1,140
+ Inquire +
+ +
+
+ +
+
+
+

See it in person before you decide on paper.

+
+ Schedule a Tour + Start a Lease Inquiry +
+
+
+
+ +
+ + + + + + diff --git a/lease.html b/lease.html new file mode 100644 index 0000000..362252b --- /dev/null +++ b/lease.html @@ -0,0 +1,192 @@ + + + + + +Lease Inquiry — Siena + + + + + + + + + + + +
+ +
+
+ +

Start a lease inquiry

+

Tell us a little about what you're looking for. A member of our leasing team will follow up within one business day with availability and next steps.

+
+
+ +
+
+
+ +
+

Tell us about your search

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ How would you like to see the property? +
+ + + +
+
+
+ + +
+
+ + +
+ +
+
+
+ +
+

How leasing works

+
+
+
+

Tour

+

See the residence and courtyard in person, virtually, or on your own schedule.

+
+
+
+
+

Apply

+

A short online application, processed within two business days.

+
+
+
+
+

Sign

+

Review and sign your lease electronically — no office visit required.

+
+
+
+
+

Move in

+

Pick up your keys and access fob from the concierge desk.

+
+
+
+
+

Prefer to talk it through?

+

Call the leasing office directly at (503) 555-0142, Monday through Saturday, 9am–6pm.

+
+
+ +
+
+
+ +
+ + + + + + diff --git a/residences.html b/residences.html new file mode 100644 index 0000000..d19f9dc --- /dev/null +++ b/residences.html @@ -0,0 +1,219 @@ + + + + + +Residences & Amenities — Siena + + + + + + + + + + + +
+ +
+
+ +

Residences & amenities

+

Six floor plans and the shared spaces around them — from the courtyard loggia to the room where you'll actually keep your bike.

+
+
+ +
+
+
+

Floor plans

+

Every residence includes white oak flooring, a full-size washer and dryer, and at least one operable window with an actual view.

+
+ +
+ PlanBedsBathsSq. Ft. +
+
+
PlanThe Cortile
Studio
+
BedsStudio
+
Baths1
+
Sq. Ft.512
+ Inquire +
+
+
PlanThe Palio
One bedroom + den
+
Beds1 + den
+
Baths1
+
Sq. Ft.820
+ Inquire +
+
+
PlanThe Duomo
One bedroom
+
Beds1
+
Baths1
+
Sq. Ft.701
+ Inquire +
+
+
PlanThe Contrada
Two bedroom
+
Beds2
+
Baths2
+
Sq. Ft.980
+ Inquire +
+
+
PlanThe Torre
Two bedroom, corner
+
Beds2
+
Baths2
+
Sq. Ft.1,140
+ Inquire +
+
+
PlanThe Belvedere
Penthouse, top floor
+
Beds2
+
Baths2.5
+
Sq. Ft.1,460
+ Inquire +
+
+
+ +
+
+
+

Amenities

+

Shared spaces that earn their square footage.

+
+
+
+ +

Courtyard & loggia

+

A shared arcade and lawn at the building's center, open sunrise to midnight, with fixed seating and a communal fireplace.

+
+
+ +

Rooftop terrace

+

West-facing views over the West End, communal grills, string lighting, and a gas fireplace for the wetter months.

+
+
+ +

Bike & gear room

+

Secure ground-floor storage, a repair stand with tools, and direct courtyard access for wet boots and muddy tires.

+
+
+ +

Fitness studio

+

Free weights, cardio, and a separate room for the 7am class you keep meaning to sign up for.

+
+
+ +

Resident lounge

+

A quiet room for working, a bookable dining room for the nights your kitchen is too small, and coffee that's actually good.

+
+
+ +

24/7 concierge

+

Package acceptance, guest check-in, and someone to call after hours who actually picks up.

+
+
+
+
+ +
+
+
+

The neighborhood

+

Set in Portland's West End, a few minutes' walk from the Park Blocks, the Pearl District, and the streetcar line.

+
+
+
+

Walk Score® 94

+

Groceries, coffee, and the streetcar are all within a five-minute walk.

+
+
+

Bike Score® 91

+

Protected lanes run directly to the river and the east side.

+
+
+

4 min to the Park Blocks

+

Portland State's tree-lined promenade, straight down 9th.

+
+
+
+
+ +
+
+
+

Found a plan you like?

+
+ Start a Lease Inquiry + Schedule a Tour +
+
+
+
+ +
+ + + + + + diff --git a/support.html b/support.html new file mode 100644 index 0000000..17c5306 --- /dev/null +++ b/support.html @@ -0,0 +1,182 @@ + + + + + +Resident Support — Siena + + + + + + + + + + + +
+ +
+
+ +

Resident support

+

For current residents. Submit a maintenance request, a billing question, or anything else — our team responds within one business day, and same-day for urgent issues.

+
+
+ +
+
+
+ +
+

Submit a request

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ Priority +
+ + +
+
+
+ + +
+ +
+
+
+ +
+
+
+
+

Submit your request

+

Include your unit number and as much detail as you can — photos help, but there's nowhere to attach one here, so just describe it well.

+
+
+
+
+

Get a confirmation

+

You'll receive an email confirming we've received it, usually within a few minutes.

+
+
+
+
+

We schedule a visit

+

Our maintenance team reaches out to confirm a time that works for you.

+
+
+
+
+

Follow-up

+

We check back in to make sure it's actually resolved, not just closed.

+
+
+
+ +
+

After-hours emergency

+

For anything that can't wait — flooding, no heat, being locked out after hours — call the 24/7 emergency line directly.

+

(503) 555-0199

+
+
+ +
+
+
+ +
+ + + + + +