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

:root {
    --ink: #000000;
    --ink-soft: #4a4a4a;
    --paper: #F3F3EF;
    --blue: #0000FF;

    --ink-faint: rgba(0, 0, 0, 0.45);
    --line: rgba(0, 0, 0, 0.16);

    --diag-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='21.213' height='21.213'><path d='M0 21.213L21.213 0' stroke='rgba(0,0,255,0.22)' stroke-width='1' stroke-dasharray='3 2'/></svg>");
    --grid-step: 15px;
    --frame-offset: 15px;

    --frame-gap: var(--frame-offset);
    --frame-border: 5px;

    --safe-top: env(safe-area-inset-top);
    --safe-right: env(safe-area-inset-right);
    --safe-bottom: env(safe-area-inset-bottom);
    --safe-left: env(safe-area-inset-left);

    --content-w: 1100px;
}

body {
    font-family: 'Inter', sans-serif;
    background-color: var(--paper);
    background-image: var(--diag-image);
    background-repeat: repeat;
    background-size: 21.213px 21.213px;
    background-position: var(--frame-offset) var(--frame-offset);
    color: var(--ink);
    min-height: 100dvh;
    overflow-x: hidden;
    position: relative;
}

.blue-frame {
    position: relative;
    margin: calc(var(--frame-offset) + var(--safe-top)) calc(var(--frame-offset) + var(--safe-right)) calc(var(--frame-offset) + var(--safe-bottom)) calc(var(--frame-offset) + var(--safe-left));
    min-height: calc(100dvh - (var(--frame-offset) * 2));
    border: 5px solid var(--blue-pure);
    padding: 30px;
    display: flex;
    flex-direction: column;
    z-index: 2;
}

.main-content {
    display: flex;
    flex-direction: column;
    gap: calc(var(--grid-step) * 2.4);
    width: 100%;
    max-width: var(--content-w);
    margin: 0 auto;
    padding-top: calc(var(--grid-step) * 5);
    padding-bottom: calc(var(--grid-step) * 4);
    flex: 1 1 auto;
}

.page-header {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.page-title {
    font-family: var(--brand);
    font-weight: 500;
    font-size: clamp(28px, 4.6vw, 52px);
    line-height: 1.02;
    letter-spacing: 0;
    color: var(--ink);
    max-width: 18ch;
}

.page-subtitle {
    font-family: var(--hand);
    font-synthesis-weight: none;
    font-size: clamp(19px, 2.6vw, 26px);
    font-weight: 600;
    line-height: 1;
    color: var(--blue);
    align-self: flex-start;
    transform: rotate(-4.5deg);
    transform-origin: left center;
    margin: 6px 0 calc(var(--grid-step) * 0.8) 4px;
}

.doc {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 62ch;
    font-size: 16px;
    line-height: 1.65;
}

.doc p { color: var(--ink); }

.doc-lead {
    font-size: 17px;
    line-height: 1.6;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--line);
    margin-bottom: 4px;
}

.doc h2 {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ink-faint);
    margin-top: calc(var(--grid-step) * 1.4);
}

.doc a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid rgb(var(--ink-rgb) / 0.3);
    transition: border-color 0.15s ease, background 0.15s ease;
}

.doc a:hover {
    border-bottom-color: currentColor;
    background: rgb(var(--ink-rgb) / 0.05);
}

@media (max-width: 768px) {
    .blue-frame { padding: 20px; }
    .main-content { padding-top: calc(var(--grid-step) * 4.5); }
}

@media (max-width: 560px) {
    :root { --frame-offset: 10px; }
    .blue-frame { border-width: 4px; padding: 16px; }
    .doc { font-size: 15px; }
}
