:root{
--color-surface-parchment:#F6F3EC;
--color-surface-limestone:#E2E1D1;
--color-text-primary:#222C46;
--color-text-secondary:#5E6175;
--color-accent-iris:#7A4C8B;
--color-border-architectural:#D6D5C4;
--color-shadow-soft:rgba(34,44,70,0.08);
--color-surface-ribbon:#E2E1D1;
--color-text-ribbon:#7A4C8B;

--font-heading:"Canela","Cormorant Garamond",Georgia,serif;
--font-body:Inter,"Segoe UI",Arial,sans-serif;

--fs-xxl:clamp(1.6rem,5vw,2.6rem);
--fs-xl:clamp(1.35rem,4vw,2rem);
--fs-lg:clamp(1.15rem,3vw,1.45rem);
--fs-md:1.15rem;
--fs-base:1rem;
--fs-sm:0.92rem;

--lh-heading:1.25;
--lh-body:1.6;

--space-xs:0.5rem;
--space-sm:0.85rem;
--space-md:1.5rem;
--space-lg:2.5rem;
--space-xl:3.5rem;
--space-xxl:5rem;

--container-max:1120px;
--container-pad:1rem;

--radius-sm:8px;
--radius-md:12px;

--shadow-soft:0 8px 24px var(--color-shadow-soft);

--transition-fast:0.2s ease;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;max-width:100%}

html{
font-size:100%;
-webkit-text-size-adjust:100%;
scroll-behavior:smooth;
overflow-x:hidden;
width:100%;
}

body{
min-height:100vh;
width:100%;
overflow-x:hidden;
font-family:var(--font-body);
font-size:var(--fs-base);
line-height:var(--lh-body);
color:var(--color-text-primary);
background:var(--color-surface-parchment);
text-rendering:optimizeLegibility;
-webkit-font-smoothing:antialiased;
}

img,video{
max-width:100%;
height:auto;
display:block;
}

svg{display:block;max-width:100%}

button,input,select,textarea{
font:inherit;
color:inherit;
background:none;
border:none;
}

button{cursor:pointer}

a{
color:inherit;
text-decoration:none;
}

a:hover{
color:var(--color-accent-iris);
}

:focus-visible{
outline:2px solid var(--color-accent-iris);
outline-offset:2px;
}

::selection{
background:rgba(122,76,139,0.2);
}

h1,h2,h3,h4,h5,h6{
font-family:var(--font-heading);
line-height:var(--lh-heading);
letter-spacing:-0.01em;
margin-bottom:var(--space-sm);
}

h1{font-size:var(--fs-xxl)}
h2{font-size:var(--fs-xl)}
h3{font-size:var(--fs-lg)}
h4{font-size:var(--fs-md)}
h5{font-size:var(--fs-base)}
h6{font-size:var(--fs-sm)}

p{
margin-bottom:var(--space-sm);
color:var(--color-text-primary);
}

small{font-size:var(--fs-sm);color:var(--color-text-secondary)}

ul,ol{
margin-bottom:var(--space-sm);
padding-left:1.25rem;
}

blockquote{
margin-bottom:var(--space-md);
padding-left:var(--space-sm);
border-left:2px solid var(--color-border-architectural);
color:var(--color-text-secondary);
}

hr{
border:none;
border-top:1px solid var(--color-border-architectural);
margin:var(--space-lg) 0;
}

.container{
width:100%;
max-width:var(--container-max);
margin-inline:auto;
padding-inline:var(--container-pad);
}

@media(min-width:768px){
.container{padding-inline:2rem}
}

.section{
padding-block:var(--space-xl);
}

@media(max-width:768px){
.section{padding-block:var(--space-lg)}
}

.surface{
background:var(--color-surface-limestone);
border:1px solid var(--color-border-architectural);
border-radius:var(--radius-md);
box-shadow:var(--shadow-soft);
}

.card{
background:var(--color-surface-limestone);
border:1px solid var(--color-border-architectural);
border-radius:var(--radius-md);
box-shadow:var(--shadow-soft);
padding:var(--space-md);
}

@media(max-width:768px){
.card{padding:var(--space-sm)}
}

.stack>*+*{
margin-top:var(--space-sm);
}

.cluster{
display:flex;
flex-wrap:wrap;
gap:var(--space-sm);
align-items:center;
}

.flex{
display:flex;
gap:var(--space-sm);
}

.flex-col{
flex-direction:column;
}

.flex-between{
justify-content:space-between;
align-items:center;
}

.flex-center{
justify-content:center;
align-items:center;
}

.flex>*{
min-width:0;
}

.button,
.button:link,
.button:visited,
a.button,
a.button:link,
a.button:visited{
display:inline-flex;
align-items:center;
justify-content:center;
min-height:44px;
padding:0.6rem 1.2rem;
border-radius:var(--radius-sm);
font-size:var(--fs-sm);
letter-spacing:0.05em;
text-transform:uppercase;
background:var(--color-accent-iris);
color:#ffffff;
box-shadow:var(--shadow-soft);
transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast),color var(--transition-fast);
max-width:100%;
text-align:center;
white-space:normal;
word-break:break-word;
text-decoration:none;
}

.button:hover,
.button:focus,
.button:focus-visible,
a.button:hover,
a.button:focus,
a.button:focus-visible{
color:#ffffff;
background:#653c75;
transform:translateY(-1px);
box-shadow:0 10px 28px var(--color-shadow-soft);
text-decoration:none;
}

.button:active,
a.button:active{
color:#ffffff;
background:#583367;
transform:translateY(0);
box-shadow:0 4px 12px var(--color-shadow-soft);
}

.button.secondary,
.button.secondary:link,
.button.secondary:visited,
a.button.secondary,
a.button.secondary:link,
a.button.secondary:visited{
background:var(--color-surface-limestone);
color:var(--color-text-primary);
border:1px solid var(--color-border-architectural);
}

.button.secondary:hover,
.button.secondary:focus,
.button.secondary:focus-visible,
a.button.secondary:hover,
a.button.secondary:focus,
a.button.secondary:focus-visible{
background:#d6d4c1;
color:var(--color-text-primary);
border-color:var(--color-accent-iris);
}

.button.secondary:active,
a.button.secondary:active{
background:#cac8b3;
color:var(--color-text-primary);
}

.input{
width:100%;
min-height:44px;
padding:0.6rem 0.8rem;
border:1px solid var(--color-border-architectural);
border-radius:var(--radius-sm);
background:#fff;
transition:border var(--transition-fast),box-shadow var(--transition-fast);
}

.input:focus{
border-color:var(--color-accent-iris);
box-shadow:0 0 0 2px rgba(122,76,139,0.2);
outline:none;
}

label{
display:block;
margin-bottom:0.25rem;
font-size:var(--fs-sm);
color:var(--color-text-secondary);
}

.form-group{
margin-bottom:var(--space-sm);
}

.ribbon{
background:var(--color-surface-ribbon);
color:var(--color-text-ribbon);
font-size:var(--fs-sm);
text-align:center;
padding:0.6rem var(--space-sm);
overflow-wrap:break-word;
word-break:break-word;
}

@media(max-width:540px){
.flex{flex-direction:column}
.button{width:100%}
.ribbon{padding:0.6rem 0.8rem}
}

.text-secondary{color:var(--color-text-secondary)}

.bg-parchment{background:var(--color-surface-parchment)}
.bg-limestone{background:var(--color-surface-limestone)}

.rounded-sm{border-radius:var(--radius-sm)}
.rounded-md{border-radius:var(--radius-md)}

.shadow-soft{box-shadow:var(--shadow-soft)}

.no-last-margin>*:last-child{
margin-bottom:0;
}

@media(prefers-reduced-motion:reduce){
*{
animation:none!important;
transition:none!important;
scroll-behavior:auto!important;
}
}