:root{
--color-surface-base:#F6F2E8;
--color-surface-alt:#E9E1D3;
--color-surface-elevated:#FFFFFF;

--color-text-primary:#2B2E3A;
--color-text-secondary:#5F625F;
--color-text-inverse:#FFFFFF;

--color-accent-gold:#D8A437;
--color-accent-blue:#3E5FAF;
--color-accent-green:#2E6B57;

--color-border-soft:#D8CEBE;
--color-border-contrast:#8A6A3C;

--shadow-medieval:0 8px 24px rgba(43,46,58,0.10);

--font-heading:"EB Garamond",serif;
--font-body:"Inter","Segoe UI",Arial,sans-serif;

--fs-1:clamp(2.2rem,4vw,3.2rem);
--fs-2:clamp(1.8rem,3vw,2.4rem);
--fs-3:2rem;
--fs-4:1.5rem;
--fs-5:1.25rem;
--fs-body:1rem;
--fs-small:0.875rem;

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

--space-1:0.25rem;
--space-2:0.5rem;
--space-3:1rem;
--space-4:1.5rem;
--space-5:2rem;
--space-6:3rem;
--space-7:4rem;

--radius-sm:0.25rem;
--radius-md:0.5rem;
--radius-lg:1rem;

--container-max:1120px;
--container-pad:clamp(1rem,3vw,2rem);

--transition-fast:200ms ease;
--transition-base:250ms ease;
}

*,*::before,*::after{
box-sizing:border-box;
margin:0;
padding:0;
}

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

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

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

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

button{
cursor:pointer;
}

a{
color:var(--color-accent-gold);
text-decoration:none;
transition:color var(--transition-fast);
}

a:hover,a:focus-visible{
color:var(--color-border-contrast);
}

ul{
list-style:none !important;
}

h1,h2,h3,h4,h5{
font-family:var(--font-heading);
line-height:var(--lh-heading);
font-weight:700;
letter-spacing:0.02em;
color:var(--color-text-primary);
}

h1{
font-size:var(--fs-1);
font-variant:small-caps;
margin-bottom:var(--space-4);
}

h2{
font-size:var(--fs-2);
font-variant:small-caps;
margin-bottom:var(--space-4);
}

h3{
font-size:var(--fs-3);
margin-bottom:var(--space-3);
}

h4{
font-size:var(--fs-4);
margin-bottom:var(--space-3);
}

h5{
font-size:var(--fs-5);
margin-bottom:var(--space-2);
}

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

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

blockquote{
margin-bottom:var(--space-4);
padding-left:var(--space-3);
border-left:3px solid var(--color-accent-gold);
color:var(--color-text-secondary);
}

ul,ol{
margin-bottom:var(--space-4);
}

li{
margin-bottom:0;
}

:where(h1,h2,h3,h4,h5,p,ul,ol,blockquote):last-child{
margin-bottom:0;
}

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

.section{
padding-top:var(--space-6);
padding-bottom:var(--space-6);
}

.surface{
background:var(--color-surface-alt);
border:1px solid var(--color-border-soft);
border-radius:var(--radius-md);
}

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

.card{
background:var(--color-surface-alt);
border:1px solid var(--color-border-soft);
border-radius:var(--radius-md);
padding:var(--space-4);
box-shadow:var(--shadow-medieval);
display:flex;
flex-direction:column;
min-width:0;
}

.stack{
display:flex;
flex-direction:column;
gap:var(--space-3);
min-width:0;
}

.row{
display:flex;
flex-wrap:wrap;
gap:var(--space-3);
min-width:0;
}

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

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

.space-between{
display:flex;
align-items:center;
justify-content:space-between;
gap:var(--space-3);
}

.button{
display:inline-flex;
align-items:center;
justify-content:center;
padding:0.6rem 1.2rem;
border-radius:var(--radius-sm);
border:1px solid var(--color-accent-gold);
background:transparent;
color:var(--color-text-primary);
transition:all var(--transition-base);
min-width:0;
}

.button-primary{
background:var(--color-accent-blue);
color:var(--color-text-inverse);
border-color:var(--color-accent-blue);
}

.button:hover,.button:focus-visible{
box-shadow:0 0 0 2px rgba(216,164,55,0.25);
}

.button-primary:hover,.button-primary:focus-visible{
filter:brightness(1.05);
}

input,textarea,select{
width:100%;
padding:0.6rem 0.75rem;
border:1px solid var(--color-border-soft);
border-radius:var(--radius-sm);
background:var(--color-surface-elevated);
transition:border var(--transition-fast),box-shadow var(--transition-fast);
}

input::placeholder,textarea::placeholder{
color:var(--color-text-secondary);
}

input:focus,textarea:focus,select:focus{
border-color:var(--color-accent-blue);
box-shadow:0 0 0 2px rgba(62,95,175,0.2);
}

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

.table{
width:100%;
border-collapse:collapse;
}

.table th,.table td{
padding:var(--space-2) var(--space-3);
border-bottom:1px solid var(--color-border-soft);
text-align:left;
}

.table th{
font-weight:600;
color:var(--color-text-primary);
}

.table td{
color:var(--color-text-secondary);
}

img{
border-radius:var(--radius-sm);
}

a:focus-visible,button:focus-visible{
outline:2px solid var(--color-accent-blue);
outline-offset:2px;
}

body,html{
overflow-x:hidden;
}