.ps-sheet{
	max-width:920px;
	margin:0 auto;
	padding:28px 28px 0;
	position:relative;
}
.ps-sheet *{box-sizing:border-box;}

.ps-ref-row{
	display:flex;
	justify-content:space-between;
	padding:6px 4px;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:11px;
	color:var(--wp--preset--color--ink-soft);
	border-bottom:1px solid var(--wp--preset--color--line);
}
.ps-ref-row span{width:24px;text-align:center;}

.ps-frame{
	border-left:1px solid var(--wp--preset--color--line-strong);
	border-right:1px solid var(--wp--preset--color--line-strong);
	padding:0 34px;
}
.ps-frame-top{border-top:1px solid var(--wp--preset--color--line-strong);}
.ps-frame-bottom{border-bottom:1px solid var(--wp--preset--color--line-strong);}

.ps-header{
	display:flex;
	justify-content:space-between;
	align-items:baseline;
	flex-wrap:wrap;
	gap:12px;
	padding:22px 0 20px;
	border-bottom:1px solid var(--wp--preset--color--line-strong);
}
.ps-mark{
	font-family:var(--wp--preset--font-family--source-serif);
	font-size:20px;
	margin:0;
}
.ps-mark a{
	color:var(--wp--preset--color--ink);
	text-decoration:none;
}
.ps-mark a:hover{
	color:var(--wp--preset--color--brass);
}
.ps-nav .wp-block-navigation__container{
	list-style:none;
	display:flex;
	gap:22px;
	margin:0;
	padding:0;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:13px;
	flex-wrap:wrap;
}
.ps-nav .wp-block-navigation-item{list-style:none;}
.ps-nav .wp-block-navigation-item__content{
	color:var(--wp--preset--color--ink-soft);
	text-decoration:none;
	padding:0;
}
.ps-nav .wp-block-navigation-item__content:hover{color:var(--wp--preset--color--brass);}

.ps-nav-group{
	display:flex;
	align-items:baseline;
	gap:22px;
	flex-wrap:wrap;
}
.wp-block-polylang-language-switcher{margin:0; padding:0;}
.wp-block-polylang-language-switcher ul{
	list-style:none;
	display:flex;
	gap:0;
	margin:0;
	padding:0;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:13px;
	text-transform:uppercase;
}
.wp-block-polylang-language-switcher li{display:flex; align-items:center;}
.wp-block-polylang-language-switcher li:not(:last-child)::after{
	content:"/";
	margin:0 8px;
	color:var(--wp--preset--color--line-strong);
	text-transform:none;
}
.wp-block-polylang-language-switcher a{color:var(--wp--preset--color--ink-soft); text-decoration:none;}
.wp-block-polylang-language-switcher a:hover{color:var(--wp--preset--color--brass);}
.wp-block-polylang-language-switcher .current-lang a,
.wp-block-polylang-language-switcher .current-lang{color:var(--wp--preset--color--ink); font-weight:500;}

.ps-hero{
	padding:56px 0 44px;
	display:flex;
	gap:36px;
	align-items:flex-start;
	flex-wrap:wrap;
}
.ps-hero-text{flex:1 1 320px; max-width:520px;}
.ps-page-intro{padding:56px 0 30px; max-width:640px;}
.ps-page-intro h1{
	font-family:var(--wp--preset--font-family--source-serif);
	font-weight:500;
	font-size:clamp(26px, 4vw, 34px);
	line-height:1.35;
	margin:0 0 18px;
}
.ps-page-intro p{
	color:var(--wp--preset--color--ink-soft);
	font-size:16px;
	line-height:1.7;
	margin:0 0 16px;
	max-width:600px;
}
.ps-portrait{
	flex-shrink:0;
	margin:0;
}
.ps-portrait img{
	width:180px;
	height:180px;
	object-fit:cover;
	border:1px solid var(--wp--preset--color--line-strong);
	display:block;
}
.ps-hero h1{
	font-family:var(--wp--preset--font-family--source-serif);
	font-weight:500;
	font-size:clamp(26px, 4vw, 36px);
	line-height:1.35;
	margin:0 0 18px;
}
.ps-hero p{
	color:var(--wp--preset--color--ink-soft);
	font-size:16px;
	max-width:520px;
	margin:0 0 26px;
}
.ps-actions{display:flex; gap:12px; flex-wrap:wrap;}
.ps-btn{
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:13px;
	padding:10px 16px;
	border:1px solid var(--wp--preset--color--ink);
	background:transparent;
	color:var(--wp--preset--color--ink);
	text-decoration:none;
	display:inline-block;
}
.ps-btn:hover{border-color:var(--wp--preset--color--brass); color:var(--wp--preset--color--brass);}
.ps-btn.ps-primary{
	background:var(--wp--preset--color--ink);
	color:var(--wp--preset--color--paper);
	border-color:var(--wp--preset--color--ink);
}
.ps-btn.ps-primary:hover{
	background:var(--wp--preset--color--brass);
	border-color:var(--wp--preset--color--brass);
	color:var(--wp--preset--color--paper);
}

.ps-panels{
	display:grid;
	grid-template-columns:repeat(3, 1fr);
	gap:0;
	border-top:1px solid var(--wp--preset--color--line-strong);
}
.ps-panel{padding:26px 22px; border-right:1px solid var(--wp--preset--color--line); position:relative;}
.ps-panel-photo{margin:0 0 14px;}
.ps-panel-photo img{
	width:100%;
	height:120px;
	object-fit:cover;
	border:1px solid var(--wp--preset--color--line);
	display:block;
}
.ps-panel:last-child{border-right:none;}
.ps-panel::before{
	content:"";
	position:absolute;
	top:12px; left:12px;
	width:8px; height:8px;
	border-top:1px solid var(--wp--preset--color--line-strong);
	border-left:1px solid var(--wp--preset--color--line-strong);
}
.ps-panel .ps-tag{
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:11px;
	color:var(--wp--preset--color--ink-soft);
	display:block;
	margin-bottom:10px;
}
.ps-panel h2{
	font-family:var(--wp--preset--font-family--source-serif);
	font-weight:500;
	font-size:19px;
	margin:0 0 10px;
}
.ps-panel p{font-size:14px; color:var(--wp--preset--color--ink-soft); margin:0 0 14px;}
.ps-panel a.ps-more{
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	text-decoration:none;
	border-bottom:1px solid var(--wp--preset--color--brass);
	padding-bottom:1px;
	color:var(--wp--preset--color--ink);
}

.ps-quote{
	display:flex;
	gap:22px;
	padding:52px 0;
	border-top:1px solid var(--wp--preset--color--line-strong);
	border-bottom:1px solid var(--wp--preset--color--line-strong);
	align-items:flex-start;
}
.ps-quote .ps-bar{
	width:3px !important;
	height:auto;
	align-self:stretch;
	background:var(--wp--preset--color--oxide);
	border:none;
	margin:0;
	flex-shrink:0;
}
.ps-quote blockquote{
	margin:0;
	border:none;
	padding:0;
}
.ps-quote blockquote p{
	font-family:var(--wp--preset--font-family--source-serif);
	font-size:22px;
	line-height:1.5;
	font-style:italic;
	margin:0;
}
.ps-quote cite{
	display:block;
	margin-top:12px;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	color:var(--wp--preset--color--ink-soft);
	font-style:normal;
}

.ps-spec{padding:44px 0;}
.ps-spec h2{
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	font-weight:500;
	color:var(--wp--preset--color--ink-soft);
	margin:0 0 18px;
}
.ps-spec-row{
	display:grid;
	grid-template-columns:180px 1fr;
	gap:16px;
	padding:12px 0;
	border-top:1px solid var(--wp--preset--color--line);
	font-size:14px;
}
.ps-spec-row:last-child{border-bottom:1px solid var(--wp--preset--color--line);}
.ps-spec-row .ps-label{
	color:var(--wp--preset--color--ink-soft);
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
}

.ps-spec-table table{
	width:100%;
	border-collapse:collapse;
}
.ps-spec-table td{
	padding:12px 16px 12px 0;
	border-top:1px solid var(--wp--preset--color--line);
	font-size:14px;
	vertical-align:top;
}
.ps-spec-table tr:last-child td{border-bottom:1px solid var(--wp--preset--color--line);}
.ps-spec-table td:first-child{
	color:var(--wp--preset--color--ink-soft);
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	width:180px;
	white-space:nowrap;
}

.ps-footer{
	display:flex;
	justify-content:space-between;
	align-items:flex-end;
	flex-wrap:wrap;
	gap:16px;
	padding:20px 0 26px;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	color:var(--wp--preset--color--ink-soft);
}
.ps-footer p{margin:0;}
.ps-footer a{color:var(--wp--preset--color--ink-soft);}
.ps-footer a:hover{color:var(--wp--preset--color--brass);}

.ps-writing-list{padding:20px 0 44px;}
.ps-writing-list .wp-block-post{padding:22px 0; border-top:1px solid var(--wp--preset--color--line);}
.ps-writing-list .wp-block-post:first-child{border-top:none;}
.ps-writing-list .wp-block-post-title{
	font-family:var(--wp--preset--font-family--source-serif);
	font-size:20px;
	margin:0 0 8px;
}
.ps-writing-list .wp-block-post-title a{color:var(--wp--preset--color--ink); text-decoration:none;}
.ps-writing-list .wp-block-post-title a:hover{color:var(--wp--preset--color--brass);}
.ps-writing-list .wp-block-post-excerpt{color:var(--wp--preset--color--ink-soft); font-size:14px;}
.ps-writing-list .wp-block-query-pagination{
	display:flex;
	gap:14px;
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	padding-top:20px;
	border-top:1px solid var(--wp--preset--color--line-strong);
}

/* Left/right sidebars, positioned in the margin outside the sheet frame.
   They never affect the sheet's own width or any existing block. */
:root{
	--ps-sheet-width:920px;
	--ps-side-width:220px;
	--ps-side-gap:28px;
}
.ps-side{
	position:fixed;
	top:140px;
	width:var(--ps-side-width);
	max-height:calc(100vh - 180px);
	overflow-y:auto;
	font-size:13px;
	line-height:1.6;
	color:var(--wp--preset--color--ink-soft);
	z-index:2;
}
.ps-side-left{
	right:calc(50% + var(--ps-sheet-width) / 2 + var(--ps-side-gap));
	text-align:right;
}
.ps-side-right{
	left:calc(50% + var(--ps-sheet-width) / 2 + var(--ps-side-gap));
}
.ps-side-heading{
	font-family:var(--wp--preset--font-family--plex-mono);
	font-size:12px;
	font-weight:500;
	letter-spacing:1px;
	text-transform:uppercase;
	color:var(--wp--preset--color--ink);
	margin:0 0 12px;
	padding-bottom:8px;
	border-bottom:1px solid var(--wp--preset--color--line-strong);
}
.ps-side p{margin:0 0 10px;}
.ps-side ul{list-style:none; margin:0; padding:0;}
.ps-side li{padding:8px 0; border-top:1px solid var(--wp--preset--color--line);}
.ps-side li:first-child{border-top:none;}
.ps-side a{color:var(--wp--preset--color--ink); text-decoration:none;}
.ps-side a:hover{color:var(--wp--preset--color--brass);}
.ps-side .wp-block-search__input{
	border-color:var(--wp--preset--color--line-strong) !important;
	font-size:13px;
}
.ps-social-heading{margin-top:22px;}
.ps-social{
	justify-content:flex-end;
	gap:12px !important;
	margin:0;
}
.ps-social .wp-social-link{width:22px; height:22px;}
.ps-social .wp-social-link a{
	color:var(--wp--preset--color--ink-soft);
	padding:0;
}
.ps-social .wp-social-link svg{width:18px; height:18px;}
.ps-social .wp-social-link:hover,
.ps-social .wp-social-link:focus{
	background:transparent;
	transform:none;
}
.ps-social .wp-social-link:hover a,
.ps-social .wp-social-link:focus a{
	color:var(--wp--preset--color--brass);
}

/* Below this width there isn't enough margin to show both sidebars
   without overlapping the sheet, so they're hidden and pages look
   exactly as they do today. */
@media (max-width: 1440px){
	.ps-side{display:none;}
}

/* Cursor Label — small text strip that follows the mouse pointer.
   All values (color, size, style, font, speed) come from theme_mod
   settings in functions.php via inline CSS variables on the element. */
#ps-cursor-label{
	position:fixed;
	top:0;
	left:0;
	pointer-events:none;
	z-index:999999;
	opacity:0;
	transition:opacity .15s ease-out;
	will-change:transform;
	/* Safety net: whatever animation mode is active, the doubled/duplicated
	   text inside must never render unclipped — this is what caused text
	   to appear split across two spots on the page. */
	overflow:hidden;
	width:max-content;
	max-width:220px;
	box-sizing:border-box;
}
.ps-cursor-item{
	font-family:var(--ps-cursor-font, var(--wp--preset--font-family--plex-mono));
	font-size:var(--ps-cursor-size, 12px);
	font-weight:var(--ps-cursor-weight, 400);
	font-style:var(--ps-cursor-fstyle, normal);
	color:var(--ps-cursor-color, #93672E);
	line-height:calc(var(--ps-cursor-size, 12px) * 1.6);
	white-space:nowrap;
}

/* ---- Scroll: Left↔Right — doubled row, masked edges, continuous slide ---- */
#ps-cursor-label[data-anim="scroll-ltr"],
#ps-cursor-label[data-anim="scroll-rtl"]{
	overflow:hidden;
	width:180px;
	height:calc(var(--ps-cursor-size, 12px) * 1.6);
	-webkit-mask-image:linear-gradient(to right, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
	mask-image:linear-gradient(to right, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%);
}
#ps-cursor-label[data-anim="scroll-ltr"] .ps-cursor-track,
#ps-cursor-label[data-anim="scroll-rtl"] .ps-cursor-track{
	display:flex;
	flex-direction:row;
	align-items:center;
}
#ps-cursor-label[data-anim="scroll-ltr"] .ps-cursor-item,
#ps-cursor-label[data-anim="scroll-rtl"] .ps-cursor-item{
	display:inline-block;
	padding-right:2.5em;
}
#ps-cursor-label[data-anim="scroll-ltr"] .ps-cursor-track{
	animation:ps-anim-scroll-ltr var(--ps-cursor-speed, 8s) linear infinite;
}
#ps-cursor-label[data-anim="scroll-rtl"] .ps-cursor-track{
	animation:ps-anim-scroll-rtl var(--ps-cursor-speed, 8s) linear infinite;
}
@keyframes ps-anim-scroll-ltr{
	0%{transform:translateX(-50%);}
	100%{transform:translateX(0%);}
}
@keyframes ps-anim-scroll-rtl{
	0%{transform:translateX(0%);}
	100%{transform:translateX(-50%);}
}

/* ---- Scroll: Up↔Down — doubled column, masked edges, continuous slide ---- */
#ps-cursor-label[data-anim="scroll-up"],
#ps-cursor-label[data-anim="scroll-down"]{
	overflow:hidden;
	width:max-content;
	max-width:220px;
	height:calc(var(--ps-cursor-size, 12px) * 3.2);
	-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 20%, #000 80%, transparent 100%);
	mask-image:linear-gradient(to bottom, transparent 0, #000 20%, #000 80%, transparent 100%);
}
#ps-cursor-label[data-anim="scroll-up"] .ps-cursor-track,
#ps-cursor-label[data-anim="scroll-down"] .ps-cursor-track{
	display:flex;
	flex-direction:column;
}
#ps-cursor-label[data-anim="scroll-up"] .ps-cursor-item,
#ps-cursor-label[data-anim="scroll-down"] .ps-cursor-item{
	display:block;
}
#ps-cursor-label[data-anim="scroll-up"] .ps-cursor-track{
	animation:ps-anim-scroll-up var(--ps-cursor-speed, 8s) linear infinite;
}
#ps-cursor-label[data-anim="scroll-down"] .ps-cursor-track{
	animation:ps-anim-scroll-down var(--ps-cursor-speed, 8s) linear infinite;
}
@keyframes ps-anim-scroll-up{
	0%{transform:translateY(0);}
	100%{transform:translateY(-50%);}
}
@keyframes ps-anim-scroll-down{
	0%{transform:translateY(-50%);}
	100%{transform:translateY(0);}
}

/* ---- Fade / Spin / Fly — one line at a time; JS toggles .is-active ---- */
#ps-cursor-label[data-anim-group="cycle"]{
	width:max-content;
	max-width:220px;
	height:calc(var(--ps-cursor-size, 12px) * 1.8);
}
#ps-cursor-label[data-anim-group="cycle"] .ps-cursor-track{
	position:relative;
	display:block;
	width:100%;
	height:100%;
}
#ps-cursor-label[data-anim-group="cycle"] .ps-cursor-item{
	position:absolute;
	top:0;
	left:0;
	display:block;
	opacity:0;
}
#ps-cursor-label[data-anim-group="cycle"] .ps-cursor-item.is-active{
	opacity:1;
}

#ps-cursor-label[data-anim="fade"] .ps-cursor-item{
	transition:opacity .5s ease;
}

#ps-cursor-label[data-anim="spin"] .ps-cursor-item{
	transform-origin:left center;
	transform:rotate(-70deg) scale(.5);
	transition:transform .5s ease, opacity .5s ease;
}
#ps-cursor-label[data-anim="spin"] .ps-cursor-item.is-active{
	transform:rotate(0deg) scale(1);
}

#ps-cursor-label[data-anim="fly"] .ps-cursor-item{
	transform:translateX(24px);
	transition:transform .5s ease, opacity .5s ease;
}
#ps-cursor-label[data-anim="fly"] .ps-cursor-item.is-active{
	transform:translateX(0);
}

/* Hide on touch devices / anywhere there's no real mouse pointer */
@media (hover:none), (pointer:coarse){
	#ps-cursor-label{display:none !important;}
}
@media (prefers-reduced-motion: reduce){
	.ps-cursor-track{animation:none !important;}
	.ps-cursor-item{transition:none !important;}
}

@media (max-width: 720px){
	.ps-sheet{padding:16px 16px 0;}
	.ps-frame{padding:0 16px;}
	.ps-nav .wp-block-navigation__container{gap:14px;}
	.ps-panels{grid-template-columns:1fr;}
	.ps-panel{border-right:none; border-bottom:1px solid var(--wp--preset--color--line);}
	.ps-panel:last-child{border-bottom:none;}
	.ps-spec-row{grid-template-columns:1fr; gap:4px;}
	.ps-hero{flex-direction:column;}
	.ps-portrait{width:120px; height:120px;}
}
@media (prefers-reduced-motion: reduce){
	.ps-sheet *{transition:none !important;}
}

/* -----------------------------------------------------------------------
 * Homepage polish pass — spacing, a text-clipping safety net, and pulling
 * imagery toward the site's ink/paper/brass identity. Pure presentation:
 * nothing here changes what any block contains, only how it's spaced,
 * sized, or colored on screen.
 * --------------------------------------------------------------------- */

/* Consistent breathing room between sections built freeform in the page
   content (a hero, an image grid, a quote line, a paragraph) — but leaves
   any block already using one of this theme's own "ps-*" classes (hero,
   quote, spec, panels, footer, sidebars) exactly as tuned, since those
   already manage their own spacing. */
.ps-frame-mid > *:not([class*="ps-"]){
	margin-top:40px;
	margin-bottom:40px;
}
.ps-frame-mid > *:not([class*="ps-"]):first-child{ margin-top:0; }
.ps-frame-mid > *:not([class*="ps-"]):last-child{ margin-bottom:0; }

/* Safety net: text should never be squeezed onto one line and clipped by
   a stray no-wrap/overflow rule (this is what was cutting a sentence off
   mid-word). The !important on white-space is needed because an inline
   style (higher specificity by default) is the most common way this
   happens. */
.ps-frame-mid p,
.ps-frame-mid h1,
.ps-frame-mid h2,
.ps-frame-mid h3,
.ps-frame-mid h4,
.ps-frame-mid blockquote,
.ps-frame-mid blockquote p,
.ps-frame-mid figcaption{
	white-space:normal !important;
	overflow-wrap:break-word;
	overflow:visible;
}

/* Pull photographic / illustrated imagery in the page content toward the
   site's muted ink/paper/brass palette, so vivid AI-generated art (blues,
   neons) doesn't clash with the rest of the page. This is a CSS filter
   only — the image files themselves are never touched. */
.ps-frame-mid img,
.ps-frame-mid .ccb-face,
.ps-frame-mid .wp-block-cover__image-background{
	filter:sepia(16%) saturate(80%) hue-rotate(-8deg) contrast(1.03);
	transition:filter .3s ease;
}
.ps-frame-mid a:hover img,
.ps-frame-mid .ccb-box:hover .ccb-face{
	filter:sepia(6%) saturate(94%) hue-rotate(-4deg) contrast(1.03);
}

/* Category Carousel Boxes — give each box a hairline edge (matching this
   theme's frame lines) and a little breathing room between boxes, even if
   the block's own "Padding between boxes" setting is left at 0. */
.ps-frame-mid .ccb-track{
	gap:14px !important;
}
.ps-frame-mid .ccb-box{
	border-radius:2px;
	box-shadow:0 0 0 1px var(--wp--preset--color--line);
}
