:root {
    color-scheme: light;
    --ink: #21201d;
    --muted: #625e56;
    --paper: #f5f1e8;
    --card: #fffdf8;
    --line: #d9d1c2;
    --control-line: #8b8377;
    --action-surface: #eee8dc;
    --specimen-surface: #f7f1df;
    --specimen-line: #9b8952;
    --accent: #e94f37;
    --accent-dark: #a72c1b;
    --focus-ring: #843522;
    --moss: #52624c;
    --heat-surface: #f2dfb6;
    --heat-ink: #66450d;
    --contour-core: #b66f52;
    --contour-boundary: #7d909a;
    --contour-outline: #4d5558;
    --error-ink: #7b2115;
    --error-surface: #ffe0d7;
    --shadow: 0 14px 40px rgb(46 39 27 / 8%);
}

* { box-sizing: border-box; }
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
html { scroll-behavior: smooth; }
body {
    margin: 0;
    color: var(--ink);
    background:
        radial-gradient(circle at 12% 0%, rgb(233 79 55 / 8%), transparent 24rem),
        var(--paper);
    font-family: "Yu Gothic", "Hiragino Kaku Gothic ProN", system-ui, sans-serif;
    line-height: 1.75;
}
a { color: var(--accent-dark); text-underline-offset: .2em; }
:where(a, button, input, textarea, summary):focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 3px;
}
.skip-link {
    position: fixed;
    top: .5rem;
    left: .5rem;
    z-index: 20;
    padding: .55rem .8rem;
    color: #fff;
    background: var(--ink);
    transform: translateY(calc(-100% - 1rem));
}
.skip-link:focus { transform: translateY(0); }
.shell { width: min(70rem, calc(100% - 2rem)); margin-inline: auto; }
.site-header {
    position: sticky;
    top: 0;
    z-index: 10;
    border-bottom: 1px solid rgb(217 209 194 / 75%);
    background: rgb(245 241 232 / 92%);
    backdrop-filter: blur(12px);
}
.header-inner {
    min-height: 4.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.brand {
    color: var(--ink);
    font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
    font-size: 1.55rem;
    font-weight: 800;
    text-decoration: none;
}
nav { display: flex; flex-wrap: wrap; gap: 1rem; font-size: .9rem; }
nav a { color: var(--ink); text-decoration: none; }
.simulation-notice {
    border-bottom: 1px solid #b89653;
    color: var(--heat-ink);
    background: var(--heat-surface);
}
.simulation-notice .shell {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .75rem;
    padding-block: .75rem;
    font-size: .86rem;
    line-height: 1.55;
}
.simulation-notice strong { color: var(--ink); }
.simulation-notice a { margin-left: auto; white-space: nowrap; }
main { padding-block: 3rem 6rem; }
.hero { max-width: 46rem; padding-block: 2.5rem 5rem; }
.hero-small { padding-bottom: 3rem; }
.eyebrow {
    margin: 0 0 .35rem;
    color: var(--accent-dark);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
h1, h2, h3 { line-height: 1.25; text-wrap: balance; }
h1 {
    margin: 0 0 1.25rem;
    font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
    font-size: clamp(2.3rem, 7vw, 5.8rem);
    letter-spacing: -.04em;
}
.topic-head h1, .hero-small h1, .prose h1, .error-page h1 {
    font-size: clamp(2.2rem, 6vw, 4.5rem);
}
h1 span { color: var(--accent); }
h2 { margin: 0; font-size: clamp(1.45rem, 3vw, 2.25rem); }
h3 { margin: 0; font-size: 1.2rem; }
.hero > p:last-child { color: var(--muted); font-size: 1.08rem; }
.section-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
}
.section-heading > span { color: var(--muted); font-size: .85rem; }
.topic-grid, .specimen-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: 1rem;
}
.pagination {
    margin-top: 1.5rem;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}
.pagination span { color: var(--muted); font-size: .85rem; }
.topic-card {
    border: 1px solid var(--line);
    border-radius: 1rem;
    background: var(--card);
    box-shadow: var(--shadow);
}
.form-panel, .empty {
    border: 1px solid var(--line);
    border-radius: .5rem;
    background: var(--action-surface);
}
.specimen-card, .specimen-shelf {
    border: 1px solid var(--specimen-line);
    border-left-width: .3rem;
    border-radius: .25rem;
    background: var(--specimen-surface);
}
.topic-card a {
    min-height: 12rem;
    display: flex;
    flex-direction: column;
    padding: 1.3rem;
    color: var(--ink);
    text-decoration: none;
}
.topic-card p { color: var(--muted); }
.topic-card:hover { border-color: var(--accent); transform: translateY(-2px); }
.topic-card { transition: transform .16s ease, border-color .16s ease; }
.topic-count { margin-top: auto; color: var(--moss); font-size: .82rem; }
.form-panel { max-width: 48rem; margin: 4rem auto 0; padding: clamp(1.25rem, 4vw, 2.5rem); }
.form-panel > p:not(.eyebrow) { color: var(--muted); }
form { display: grid; gap: 1rem; }
label { display: grid; gap: .35rem; font-weight: 700; }
.form-field { display: grid; gap: .35rem; }
input[type="text"], textarea {
    width: 100%;
    border: 1px solid var(--control-line);
    border-radius: .65rem;
    padding: .8rem .9rem;
    color: var(--ink);
    background: #fff;
    font: inherit;
}
textarea { resize: vertical; }
input:focus-visible, textarea:focus-visible { border-color: var(--focus-ring); }
[aria-invalid="true"] { border-color: var(--error-ink); }
button {
    justify-self: start;
    min-height: 2.75rem;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: .75rem 1.25rem;
    color: #fff;
    background: var(--ink);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}
button:hover { background: var(--accent-dark); }
.button-small { padding: .55rem 1rem; font-size: .9rem; }
.optional { color: var(--muted); font-size: .78rem; font-weight: 500; }
.honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.topic-head { max-width: 52rem; margin-bottom: 2.5rem; }
.topic-jump-nav { margin: -1.25rem 0 2rem; gap: 1rem; font-size: .84rem; }
.topic-jump-nav a, .topic-back-link a { color: var(--muted); }
.topic-back-link { margin: 1rem 0 0; text-align: right; font-size: .84rem; }
#topic-top, #observations-heading, #new-observation-heading { scroll-margin-top: 6rem; }
.topic-lead { color: var(--muted); font-size: 1.12rem; }
.specimen-shelf { margin-block: 2rem; padding: 1.25rem 1.5rem; }
.specimen-shelf ul { margin-bottom: 0; }
.observation-list { display: grid; border-top: 1px solid var(--line); }
.observation {
    scroll-margin-top: 6rem;
    border-bottom: 1px solid var(--line);
    padding: clamp(1rem, 3vw, 1.6rem);
    overflow-wrap: anywhere;
}
.observation:target { outline: 3px solid var(--focus-ring); outline-offset: 3px; background: rgb(255 253 248 / 55%); }
.observation-header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.observation-provenance {
    color: var(--muted);
    font-size: .8rem;
    font-weight: 700;
}
.labels { display: flex; flex-wrap: wrap; gap: .4rem; }
.tag {
    border: 1px solid var(--line);
    border-radius: .25rem;
    padding: .15rem .55rem;
    color: var(--muted);
    background: transparent;
    font-size: .72rem;
    font-weight: 800;
}
.tag-hot { border-color: #b89653; color: var(--heat-ink); background: var(--heat-surface); }
.tag-specimen { border-color: var(--specimen-line); color: #554613; background: var(--specimen-surface); }
.permalink { color: var(--muted); text-decoration: none; }
.observation-body { margin: 1rem 0; font-size: clamp(1.05rem, 2.4vw, 1.35rem); }
.observation-link { margin: -.35rem 0 .8rem; font-size: .78rem; }
.permalink:hover, .permalink:focus-visible { text-decoration: underline; }
.observation-composer {
    margin-top: 1rem;
    border: 1px dashed #a69d8e;
    border-radius: .5rem;
    padding: clamp(1rem, 3vw, 1.6rem);
    background: var(--action-surface);
}
.observation-composer h3 { margin-bottom: 1rem; }
.field-help { margin: -.35rem 0 0; color: var(--muted); font-size: .8rem; }
.field-error { margin: 0; color: var(--error-ink); font-size: .84rem; font-weight: 700; }
.form-errors {
    border: 2px solid var(--error-ink);
    border-radius: .35rem;
    padding: .8rem 1rem;
    color: var(--error-ink);
    background: var(--error-surface);
}
.form-errors p { margin: 0; }
.form-errors ul { margin: .45rem 0 0; padding-left: 1.25rem; }
.form-errors a { color: inherit; }
.form-errors:focus {
    outline: 3px solid var(--focus-ring);
    outline-offset: 3px;
    scroll-margin-top: 6rem;
}
.reaction-contour-legend { margin: -.65rem 0 1.25rem; color: var(--muted); font-size: .8rem; }
.reaction-contour {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .65rem;
    margin-block: .8rem 1rem;
}
.reaction-contour-graphic { flex: 0 0 auto; width: 3.25rem; height: 3.25rem; }
.reaction-contour-boundary { fill: var(--contour-boundary); }
.reaction-contour-core { fill: var(--contour-core); stroke: var(--ink); stroke-width: 1.25; }
.reaction-contour-outline { fill: none; stroke: var(--contour-outline); stroke-width: 1.25; }
.reaction-contour-empty .reaction-contour-outline { stroke-dasharray: 2.5 2.5; }
.reaction-contour-details { color: var(--muted); font-size: .84rem; }
.reaction-contour-details summary { cursor: pointer; }
.reaction-contour-details p { margin: .45rem 0 0; }
.reaction-contour-empty-label { margin: 0; color: var(--muted); font-size: .84rem; }
.reacted { color: var(--muted); font-size: .84rem; }
.reaction-comments { display: grid; gap: .35rem; padding: 0; list-style: none; }
.reaction-comments li {
    border-left: 3px solid var(--line);
    padding-left: .7rem;
    color: var(--muted);
    font-size: .9rem;
}
.reaction-comments li span { margin-right: .45rem; color: var(--moss); font-weight: 800; }
.reaction-form {
    margin-top: 1.25rem;
    border: 1px solid var(--control-line);
    border-radius: .35rem;
    padding: 1rem;
    background: var(--action-surface);
}
.reaction-choice {
    border: 0;
    margin: 0;
    padding: 0;
}
.reaction-choice legend { font-weight: 800; }
.reaction-choice .field-help { margin-top: .35rem; }
.reaction-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .65rem;
    margin-top: .65rem;
}
.reaction-option {
    min-height: 2.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border: 1px solid var(--control-line);
    border-radius: .65rem;
    padding: .55rem .7rem;
    background: var(--card);
    cursor: pointer;
}
.reaction-option:has(input:checked) { border-color: var(--ink); background: #e3dccf; }
.reaction-option:has(input:focus-visible) { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.reaction-followup { display: grid; gap: .75rem; }
.reaction-followup[hidden] { display: none; }
.reaction-note { margin: 0; color: var(--muted); font-size: .8rem; }
.observation-hidden { min-height: 5rem; color: var(--muted); }
.specimen-card { padding: 1.3rem; }
.specimen-card blockquote { margin: .8rem 0; font-family: "Yu Mincho", serif; font-size: 1.15rem; }
.selection-note { color: var(--muted); font-size: .88rem; }
.empty { padding: 1.5rem; color: var(--muted); }
.prose { max-width: 48rem; }
.prose h2 { margin-top: 2.5rem; }
.flash { margin: 0 0 1rem; border-radius: .65rem; padding: .8rem 1rem; }
.flash-success { color: #254725; background: #e0eed9; }
.flash-error { color: var(--error-ink); background: var(--error-surface); }
.error-page { min-height: 45vh; padding-top: 4rem; }
.site-footer { border-top: 1px solid var(--line); padding-block: 2rem; color: var(--muted); font-size: .86rem; }
.site-footer .shell { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; }
@media (max-width: 40rem) {
    .header-inner { align-items: flex-start; flex-direction: column; padding-block: .8rem; }
    .site-header { position: static; }
    main { padding-top: 2rem; }
}
@media (max-width: 24rem) {
    .reaction-options { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
    * { scroll-behavior: auto !important; transition: none !important; }
}
@media (forced-colors: active) {
    .topic-card, .form-panel, .empty, .specimen-card, .specimen-shelf,
    .observation, .observation-composer, .reaction-form, .reaction-option, .tag, .form-errors,
    [aria-invalid="true"] {
        border-color: CanvasText;
    }
    .observation:target { outline-color: Highlight; }
    .reaction-contour-graphic { forced-color-adjust: none; }
    .reaction-contour-boundary { fill: CanvasText; }
    .reaction-contour-core { fill: Highlight; stroke: CanvasText; }
    .reaction-contour-outline { stroke: CanvasText; }
}
