/*
Theme Name: Plotviora
Author: Muhammad Mujahid Sarfraz
Description: Plotviora is a premium-feel block theme for real estate agencies, property dealers, builders and realtors. It includes more than 35 hand-crafted patterns (hero sections, property showcases, neighbourhoods, agents, pricing, FAQ, contact and more), ready-made page layouts for Home, About, Services, Properties, Agents, Sell, FAQ and Contact, four style variations and original illustrations. Use regular posts as property listings: categories for Sale or Rent and tags for features. Fully editable in the Site Editor, accessible and translation ready.
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 7.4
Version: 1.1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: plotviora
Tags: blog, one-column, two-columns, three-columns, four-columns, full-site-editing, block-patterns, block-styles, custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-width-template, grid-layout, wide-blocks, style-variations, template-editing, threaded-comments, translation-ready
*/

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }
a { text-underline-offset: .18em; text-decoration-thickness: 1px; }
::selection { background: var(--wp--preset--color--accent-light); color: var(--wp--preset--color--contrast); }

/* Sections stack edge to edge; each section brings its own padding. */
.wp-site-blocks > * + * { margin-block-start: 0; }
:where(main, .wp-block-post-content, .entry-content) > .alignfull + .alignfull { margin-block-start: 0; }
:where(main, .wp-block-post-content) > .alignfull:last-child { margin-block-end: 0; }

/* ---------- Header ---------- */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: 0; z-index: 100; }
.admin-bar .wp-site-blocks > header.wp-block-template-part { top: var(--wp-admin--admin-bar--height, 32px); }
.plotviora-header { backdrop-filter: saturate(160%) blur(10px); -webkit-backdrop-filter: saturate(160%) blur(10px); background-color: color-mix(in srgb, var(--wp--preset--color--base) 92%, transparent) !important; border-bottom: 1px solid var(--wp--preset--color--line); }
.plotviora-topbar a { text-decoration: none; }
.plotviora-topbar a:hover { text-decoration: underline; color: inherit; }
.plotviora-header .wp-block-navigation-item__content { padding: .35rem 0; position: relative; }
.plotviora-header .wp-block-navigation .wp-block-navigation-item__content::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 1px; background: currentColor; transition: right .25s ease; }
.plotviora-header .wp-block-navigation .wp-block-navigation-item__content:hover::after,
.plotviora-header .wp-block-navigation .current-menu-item > .wp-block-navigation-item__content::after { right: 0; }
@media (max-width: 781px) {
	.plotviora-topbar { display: none !important; }
	.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 0; position: relative; }
	.plotviora-header .plotviora-header-cta { display: none; }
}

/* ---------- Typography helpers ---------- */
.is-style-plotviora-eyebrow,
.plotviora-eyebrow { font-family: var(--wp--preset--font-family--body) !important; font-size: var(--wp--preset--font-size--x-small) !important; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--wp--preset--color--accent); }
.is-style-plotviora-eyebrow::before { content: ""; display: inline-block; width: 28px; height: 1px; background: currentColor; vertical-align: middle; margin-right: .75rem; transform: translateY(-2px); }
.has-text-align-center.is-style-plotviora-eyebrow::after { content: ""; display: inline-block; width: 28px; height: 1px; background: currentColor; vertical-align: middle; margin-left: .75rem; transform: translateY(-2px); }
.plotviora-lead { font-size: var(--wp--preset--font-size--large); line-height: 1.55; color: var(--wp--preset--color--muted); }
.plotviora-price { font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--large); font-weight: 600; color: var(--wp--preset--color--accent); letter-spacing: -.01em; }
.plotviora-meta { font-size: var(--wp--preset--font-size--x-small); color: var(--wp--preset--color--muted); letter-spacing: .02em; }
.plotviora-big-number { font-family: var(--wp--preset--font-family--heading); line-height: 1; letter-spacing: -.03em; }

/* Dark sections: keep links and accents readable. */
.has-contrast-background-color .is-style-plotviora-eyebrow,
.has-contrast-2-background-color .is-style-plotviora-eyebrow,
.has-dusk-gradient-background .is-style-plotviora-eyebrow,
.wp-block-cover .is-style-plotviora-eyebrow { color: var(--wp--preset--color--accent-light); }
.has-contrast-background-color a:where(:not(.wp-element-button)):hover,
.has-contrast-2-background-color a:where(:not(.wp-element-button)):hover,
.wp-block-cover a:where(:not(.wp-element-button)):hover { color: var(--wp--preset--color--accent-light); }
.has-contrast-background-color .plotviora-meta,
.has-contrast-2-background-color .plotviora-meta { color: inherit; opacity: .75; }

/* ---------- Buttons ---------- */
.wp-element-button, .wp-block-button__link { transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease; }
.wp-block-button.is-style-outline > .wp-block-button__link { border: 1px solid currentColor; background: transparent; padding: calc(1rem - 1px) calc(1.75rem - 1px); }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--wp--preset--color--contrast); border-color: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); }
.has-contrast-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.has-contrast-2-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-cover .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--wp--preset--color--base); border-color: var(--wp--preset--color--base); color: var(--wp--preset--color--contrast); }
.is-style-plotviora-arrow > .wp-block-button__link::after { content: "\2192"; display: inline-block; margin-left: .6em; transition: transform .2s ease; }
.is-style-plotviora-arrow > .wp-block-button__link:hover::after { transform: translateX(4px); }
.is-style-plotviora-link > .wp-block-button__link { background: transparent !important; color: inherit !important; padding: 0 0 .2rem !important; border-radius: 0 !important; border-bottom: 1px solid currentColor; }
.is-style-plotviora-link > .wp-block-button__link::after { content: "\2192"; display: inline-block; margin-left: .5em; transition: transform .2s ease; }
.is-style-plotviora-link > .wp-block-button__link:hover::after { transform: translateX(4px); }

/* ---------- Cards ---------- */
.is-style-plotviora-card { background-color: var(--wp--preset--color--base); border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--medium); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; }
.is-style-plotviora-card:hover { transform: translateY(-4px); box-shadow: var(--wp--preset--shadow--lift); border-color: transparent; }
.is-style-plotviora-panel { border-radius: var(--wp--custom--radius--large); overflow: hidden; }
.plotviora-property-card { height: 100%; display: flex; flex-direction: column; }
.plotviora-property-card > .wp-block-group:last-child { flex: 1; }
.plotviora-property-card .wp-block-image,
.plotviora-property-card .wp-block-post-featured-image { margin: 0; overflow: hidden; border-radius: 0; position: relative; }
.plotviora-property-card .wp-block-image img,
.plotviora-property-card .wp-block-post-featured-image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.plotviora-property-card:hover .wp-block-image img,
.plotviora-property-card:hover .wp-block-post-featured-image img { transform: scale(1.05); }
.plotviora-property-card .wp-block-post-featured-image:empty,
.plotviora-property-card .wp-block-post-featured-image:not(:has(img)) { display: none; }
.plotviora-meta-row { border-top: 1px solid var(--wp--preset--color--line); padding-top: 1rem; }

/* Badges */
.plotviora-badge,
.plotviora-badge a { display: inline-block; font-size: .6875rem !important; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; line-height: 1; padding: .5rem .75rem; border-radius: 999px; background: var(--wp--preset--color--surface); color: var(--wp--preset--color--accent); }
.wp-block-post-terms.plotviora-badge { background: none; padding: 0; }
.wp-block-post-terms.plotviora-badge .wp-block-post-terms__separator { display: none; }
.wp-block-post-terms.plotviora-badge a { margin: 0 .35rem .35rem 0; }
.plotviora-badge-dark { background: var(--wp--preset--color--contrast) !important; color: var(--wp--preset--color--base) !important; }
.plotviora-chips a { display: inline-block; padding: .45rem .9rem; margin: 0 .4rem .5rem 0; border: 1px solid var(--wp--preset--color--line); border-radius: 999px; text-decoration: none; font-size: var(--wp--preset--font-size--x-small); }
.plotviora-chips a:hover { border-color: currentColor; }
.plotviora-chips .wp-block-post-terms__separator { display: none; }

/* ---------- Icons (masked so they follow the accent color of every style variation) ---------- */
.plotviora-icon { margin: 0 !important; width: 52px; height: 52px; flex: 0 0 auto; background-color: var(--wp--preset--color--accent); -webkit-mask: var(--plotviora-icon) center / contain no-repeat; mask: var(--plotviora-icon) center / contain no-repeat; }
.plotviora-icon img { opacity: 0; width: 100%; height: 100%; display: block; }
.plotviora-icon.is-small { width: 22px; height: 22px; }
.has-contrast-background-color .plotviora-icon,
.has-contrast-2-background-color .plotviora-icon { background-color: var(--wp--preset--color--accent-light); }
.plotviora-icon-home { --plotviora-icon: url(assets/icons/home.svg); }
.plotviora-icon-key { --plotviora-icon: url(assets/icons/key.svg); }
.plotviora-icon-chart { --plotviora-icon: url(assets/icons/chart.svg); }
.plotviora-icon-shield { --plotviora-icon: url(assets/icons/shield.svg); }
.plotviora-icon-handshake { --plotviora-icon: url(assets/icons/handshake.svg); }
.plotviora-icon-pin { --plotviora-icon: url(assets/icons/pin.svg); }
.plotviora-icon-phone { --plotviora-icon: url(assets/icons/phone.svg); }
.plotviora-icon-mail { --plotviora-icon: url(assets/icons/mail.svg); }
.plotviora-icon-clock { --plotviora-icon: url(assets/icons/clock.svg); }
.plotviora-icon-building { --plotviora-icon: url(assets/icons/building.svg); }
.plotviora-icon-land { --plotviora-icon: url(assets/icons/land.svg); }
.plotviora-icon-villa { --plotviora-icon: url(assets/icons/villa.svg); }
.plotviora-icon-store { --plotviora-icon: url(assets/icons/store.svg); }
.plotviora-icon-camera { --plotviora-icon: url(assets/icons/camera.svg); }
.plotviora-icon-doc { --plotviora-icon: url(assets/icons/doc.svg); }
.plotviora-icon-star { --plotviora-icon: url(assets/icons/star.svg); }

/* ---------- Media ---------- */
.is-style-plotviora-frame img { border-radius: var(--wp--custom--radius--large) !important; box-shadow: var(--wp--preset--shadow--lift); }
.is-style-plotviora-arch img { border-radius: 999px 999px var(--wp--custom--radius--medium) var(--wp--custom--radius--medium) !important; }
.plotviora-float-card { position: relative; z-index: 2; }
@media (min-width: 782px) {
	.plotviora-overlap { margin-top: calc(-1 * var(--wp--preset--spacing--50)) !important; position: relative; z-index: 3; }
	.plotviora-float-card { margin-top: -6rem !important; margin-left: -3rem !important; max-width: 300px; }
}

/* ---------- Hero search ---------- */
.plotviora-search .wp-block-search__inside-wrapper { background: var(--wp--preset--color--base); border: 0; border-radius: var(--wp--custom--radius--small); padding: .5rem; box-shadow: var(--wp--preset--shadow--lift); }
.plotviora-search .wp-block-search__input { border: 0; background: transparent; padding: .9rem 1rem; font-size: var(--wp--preset--font-size--medium); color: #0F1A24; min-width: 0; }
.plotviora-search .wp-block-search__input::placeholder { color: #5B6670; opacity: 1; }
.plotviora-search .wp-block-search__button { margin-left: .5rem; padding: .9rem 1.75rem; border-radius: var(--wp--custom--radius--small); }

/* ---------- Lists ---------- */
.is-style-plotviora-check { list-style: none; padding-left: 0 !important; }
.is-style-plotviora-check li { position: relative; padding-left: 2rem; margin-bottom: .65rem; }
.is-style-plotviora-check li::before { content: ""; position: absolute; left: 0; top: .3em; width: 1.15rem; height: 1.15rem; border-radius: 50%; background: var(--wp--preset--color--accent); -webkit-mask: url(assets/icons/check.svg) center / contain no-repeat; mask: url(assets/icons/check.svg) center / contain no-repeat; }
.has-contrast-background-color .is-style-plotviora-check li::before,
.has-contrast-2-background-color .is-style-plotviora-check li::before { background: var(--wp--preset--color--accent-light); }

/* ---------- Stats & steps ---------- */
.plotviora-stat { border-top: 1px solid currentColor; padding-top: 1.25rem; }
.has-contrast-background-color .plotviora-stat,
.has-contrast-2-background-color .plotviora-stat { border-top-color: rgba(255, 255, 255, .22); }
.plotviora-step-number { font-family: var(--wp--preset--font-family--heading); font-size: 3.25rem !important; line-height: 1 !important; color: var(--wp--preset--color--accent); margin: 0; }
.has-contrast-background-color .plotviora-step-number, .has-contrast-2-background-color .plotviora-step-number { color: var(--wp--preset--color--accent-light); }

/* ---------- FAQ / details ---------- */
.wp-block-details summary { cursor: pointer; list-style: none; position: relative; padding-right: 2.5rem; font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--large); line-height: 1.35; }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; position: absolute; right: .25rem; top: 50%; transform: translateY(-50%); font-family: var(--wp--preset--font-family--body); font-size: 1.5rem; font-weight: 300; transition: transform .25s ease; color: var(--wp--preset--color--accent); }
.wp-block-details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.wp-block-details > :not(summary) { color: var(--wp--preset--color--muted); margin-top: .75rem; }

/* ---------- Testimonials ---------- */
.plotviora-stars { color: var(--wp--preset--color--accent-light); letter-spacing: .2em; font-size: 1rem !important; }
.plotviora-quote-mark { font-family: var(--wp--preset--font-family--heading); font-size: 6rem !important; line-height: .6 !important; color: var(--wp--preset--color--accent-light); margin-bottom: 0 !important; }

/* ---------- Avatars ---------- */
.plotviora-avatar img { border-radius: 50% !important; aspect-ratio: 1; object-fit: cover; }
.plotviora-agent .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; }

/* ---------- Partner wordmarks ---------- */
.plotviora-wordmark { font-family: var(--wp--preset--font-family--heading); font-size: 1.35rem !important; letter-spacing: .04em; opacity: .55; transition: opacity .2s ease; white-space: nowrap; }
.plotviora-wordmark:hover { opacity: 1; }

/* ---------- Pricing ---------- */
.plotviora-plan-featured { position: relative; }
@media (min-width: 782px) { .plotviora-plan-featured { transform: translateY(-12px); } }

/* ---------- Page header ---------- */
.plotviora-page-header .wp-block-post-title,
.plotviora-page-header .wp-block-query-title { max-width: 18ch; }
.plotviora-page-header.has-text-align-center .wp-block-post-title { margin-left: auto; margin-right: auto; }

/* ---------- Single property ---------- */
@media (min-width: 782px) { .plotviora-sticky { position: sticky; top: 7rem; } }
.plotviora-sidebar-card .wp-block-button,
.plotviora-sidebar-card .wp-block-button__link { width: 100%; text-align: center; }

/* ---------- Query, pagination, comments ---------- */
.wp-block-query-pagination { gap: .5rem; }
.wp-block-query-pagination-numbers .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 2.5rem; height: 2.5rem; border-radius: 999px; text-decoration: none; }
.wp-block-query-pagination-numbers .page-numbers.current { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); }
.wp-block-query-pagination a { text-decoration: none; }
.wp-block-comment-template .comment { margin-bottom: 1.5rem; }
.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),
.wp-block-post-comments-form textarea { border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--small); padding: .8rem 1rem; background: var(--wp--preset--color--base); color: var(--wp--preset--color--contrast); }
.wp-block-search__input { border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--small); padding: .8rem 1rem; }

/* ---------- Footer ---------- */
.plotviora-footer a { text-decoration: none; }
.plotviora-footer a:hover { text-decoration: underline; color: inherit; }
.plotviora-footer .wp-block-navigation { gap: .65rem; }
.plotviora-footer .wp-block-site-title a { color: inherit; }
.plotviora-footer-muted { opacity: .72; }
.plotviora-footer .wp-block-social-links.is-style-logos-only .wp-social-link { color: inherit; }
.plotviora-footer .wp-block-categories { list-style: none; padding-left: 0; }
.plotviora-footer .wp-block-categories li { margin-bottom: .65rem; }
.plotviora-footer .wp-block-navigation { font-weight: 400; }

/* ---------- Hero with illustration ---------- */
.plotviora-hero-cover { position: relative; color: #F7F4EE; background: #121E29 url(assets/images/hero-villa.svg) 50% calc(100% + 4vw) / 100% auto no-repeat; padding-top: var(--wp--preset--spacing--50) !important; padding-bottom: calc(32vw + 1rem) !important; }
.plotviora-hero-cover h1, .plotviora-hero-cover h2 { color: #FFFFFF; }
.plotviora-hero-cover .is-style-plotviora-eyebrow { color: #C9A86A; }
.plotviora-hero-cover .plotviora-hero-lead { color: rgba(247, 244, 238, .82); max-width: 680px; margin-left: auto; margin-right: auto; }
.plotviora-hero-popular { color: rgba(247, 244, 238, .75); }
.plotviora-hero-popular a { display: inline-block; margin: .25rem .2rem; padding: .3rem .85rem; border: 1px solid rgba(247, 244, 238, .35); border-radius: 999px; color: #F7F4EE; text-decoration: none; }
.plotviora-hero-popular a:hover { background: #F7F4EE; color: #0F1A24; }
@media (max-width: 781px) { .plotviora-hero-cover { padding-bottom: calc(48vw + 1rem) !important; background-size: 140% auto; } }

/* ---------- Section details ---------- */
.plotviora-float-card { box-shadow: var(--wp--preset--shadow--lift); }
.plotviora-area .wp-block-image { overflow: hidden; border-radius: var(--wp--custom--radius--medium); }
.plotviora-area .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.plotviora-area:hover .wp-block-image img { transform: scale(1.05); }
.plotviora-milestone { border-top: 1px solid var(--wp--preset--color--line); margin: 0 !important; }
.plotviora-milestone:last-child { border-bottom: 1px solid var(--wp--preset--color--line); }
.plotviora-statement { padding: 0 !important; text-align: left !important; }
.plotviora-statement blockquote p { font-size: var(--wp--preset--font-size--xx-large) !important; line-height: 1.25; }
.plotviora-statement cite { margin-top: 1rem; display: block; color: var(--wp--preset--color--muted); font-family: var(--wp--preset--font-family--body); font-size: var(--wp--preset--font-size--small); text-transform: uppercase; letter-spacing: .14em; }
.plotviora-insight .wp-block-post-title { margin-top: .25rem; }
.plotviora-cta-panel { background-image: radial-gradient(circle at 85% 15%, rgba(201, 168, 106, .22), transparent 45%), radial-gradient(circle at 10% 100%, rgba(255, 255, 255, .06), transparent 40%); }
.plotviora-plan-featured .plotviora-badge { background: var(--wp--preset--color--accent-light); color: var(--wp--preset--color--contrast); }
.plotviora-plan-featured .plotviora-meta { color: inherit; opacity: .75; }
.plotviora-plan-featured hr { opacity: .25; }
.plotviora-sidebar-card { border: 0 !important; }
.plotviora-sidebar-card:hover, .plotviora-sticky .is-style-plotviora-card:hover { transform: none; }
.plotviora-single-header .wp-block-post-title { max-width: 22ch; }
.plotviora-page-content > :first-child:not(.alignfull) { margin-top: var(--wp--preset--spacing--50); }
.plotviora-page-content > :last-child:not(.alignfull) { margin-bottom: var(--wp--preset--spacing--60); }
.wp-block-post-featured-image.plotviora-overlap img { border-radius: var(--wp--custom--radius--large); }
.wp-block-post-featured-image.plotviora-overlap:not(:has(img)) { display: none; }
.wp-block-post-content > .wp-block-image img, .wp-block-post-content > figure img { height: auto; }

/* ---------- Accessibility ---------- */
:where(.wp-site-blocks) :focus-visible { outline: 2px solid var(--wp--preset--color--accent); outline-offset: 3px; }
:where(.has-contrast-background-color, .has-contrast-2-background-color, .wp-block-cover) :focus-visible { outline-color: var(--wp--preset--color--accent-light); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
	.is-style-plotviora-card:hover { transform: none; }
}
