/* ============================================================
   nonri.day  --  daily logic
   Swiss x Scandinavian typographic style  (International Typographic Style)
   Palette: #fafafa #2d2d2d #e0e0e0 #0055cc #767676 #f5f5f5 #cc0000 #ffffff
   Type: DM Serif Display (display) + DM Sans (body)
   Layout: clean grids on an 8-column system, 24px gutters.
   ============================================================ */

:root {
    --proof-white: #fafafa;
    --axiom-black: #2d2d2d;
    --premise-gray: #e0e0e0;
    --truth-blue: #0055cc;
    --lemma-gray: #767676;
    --theorem-off: #f5f5f5;
    --contradiction-red: #cc0000;
    --pure-white: #ffffff;

    --col-max: 720px;
    --gutter: 24px;
    --rule-thickness: 1px;
}

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

html {
    scroll-behavior: smooth;
    font-feature-settings: "tnum" 1, "lnum" 0;
}

body {
    background: var(--proof-white);
    color: var(--axiom-black);
    font-family: 'DM Sans', system-ui, -apple-system, sans-serif;
    font-size: 1rem;
    line-height: 1.8;
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    counter-reset: proposition;
    overflow-x: hidden;
    position: relative;
}

em {
    font-family: 'DM Serif Display', serif;
    font-style: italic;
    color: var(--axiom-black);
}

code.op {
    font-family: 'DM Serif Display', serif;
    font-style: normal;
    color: var(--truth-blue);
    padding: 0 0.15em;
    font-size: 1.05em;
}

.link-truth {
    color: var(--truth-blue);
    border-bottom: 1px solid currentColor;
    padding-bottom: 1px;
    transition: color 0.2s ease;
    cursor: pointer;
}

.link-truth:hover {
    color: var(--axiom-black);
    border-bottom-color: var(--axiom-black);
}

/* ------------------------------------------------------------
   Grid Guides  --  faint vertical lines at 8 column positions
   ------------------------------------------------------------ */
.grid-guides {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    max-width: 1200px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    column-gap: var(--gutter);
    padding: 0 var(--gutter);
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    height: 100vh;
}

.grid-guides span {
    border-left: 1px solid var(--premise-gray);
    opacity: 0.30;
    height: 100%;
}

@media (max-width: 720px) {
    .grid-guides { display: none; }
}

/* ------------------------------------------------------------
   Margin Symbols  --  decorative logical operators
   ------------------------------------------------------------ */
.margin-symbols {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.margin-symbols .ms {
    position: absolute;
    font-family: 'DM Serif Display', serif;
    color: var(--premise-gray);
    user-select: none;
    line-height: 1;
}

.ms-1 { top: 14vh; left: 4vw; font-size: 6rem; }
.ms-2 { top: 38vh; right: 5vw; font-size: 4.5rem; }
.ms-3 { top: 62vh; left: 6vw; font-size: 5rem; }
.ms-4 { top: 80vh; right: 4vw; font-size: 7rem; }
.ms-5 { top: 110vh; left: 3vw; font-size: 4rem; }
.ms-6 { top: 140vh; right: 6vw; font-size: 5.5rem; }

@media (max-width: 900px) {
    .margin-symbols { display: none; }
}

/* ------------------------------------------------------------
   Axiom Header  --  hero with golden ratio positioning
   ------------------------------------------------------------ */
.axiom-header {
    position: relative;
    width: 100%;
    height: 100vh;
    min-height: 600px;
    background: var(--proof-white);
    z-index: 2;
}

.axiom-inner {
    position: absolute;
    top: 38.2%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    width: 100%;
    max-width: 800px;
    padding: 0 var(--gutter);
}

.axiom-eyebrow {
    font-family: 'DM Sans', sans-serif;
    font-size: 0.70rem;
    font-weight: 500;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--lemma-gray);
    margin-bottom: 2.5rem;
}

.axiom-title {
    font-family: 'DM Serif Display', serif;
    font-weight: 400;
    font-size: clamp(2rem, 5vw, 3.5rem);
    color: var(--axiom-black);
    letter-spacing: -0.01em;
    line-height: 1.1;
    margin-bottom: 2rem;
}

.axiom-rule {
    border: 0;
    height: var(--rule-thickness);
    background: var(--axiom-black);
    width: 61.8%;
    margin: 0 auto 2rem;
    transform-origin: center;
}

.axiom-meta {
    font-family: 'DM Sans', sans-serif;
    font-size: 0.85rem;
    font-weight: 400;
    color: var(--lemma-gray);
    letter-spacing: 0.04em;
    font-style: italic;
}

.axiom-scrollhint {
    position: absolute;
    bottom: 3rem;
    left: 50%;
    transform: translateX(-50%);
    font-family: 'DM Sans', sans-serif;
    font-size: 0.70rem;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--lemma-gray);
    animation: gentleBob 3s ease-in-out infinite;
}

@keyframes gentleBob {
    0%, 100% { transform: translate(-50%, 0); opacity: 0.65; }
    50%      { transform: translate(-50%, 6px); opacity: 1; }
}

/* ------------------------------------------------------------
   Treatise Body
   ------------------------------------------------------------ */
.treatise {
    position: relative;
    z-index: 2;
    max-width: var(--col-max);
    margin: 0 auto;
    padding: 6rem var(--gutter) 2rem;
}

/* ------------------------------------------------------------
   Propositions  --  numbered Wittgenstein-style
   ------------------------------------------------------------ */
.proposition {
    position: relative;
    margin-bottom: 5rem;
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}

.proposition.visible {
    opacity: 1;
    transform: translateY(0);
}

/* alternating off-white background for top-level even sections */
.proposition.level-1:nth-child(even) {
    background: var(--theorem-off);
    padding: 2.5rem 2rem;
    margin-left: -2rem;
    margin-right: -2rem;
}

@media (max-width: 720px) {
    .proposition.level-1:nth-child(even) {
        margin-left: -1rem;
        margin-right: -1rem;
        padding: 2rem 1rem;
    }
}

.prop-head {
    position: relative;
    margin-bottom: 1.5rem;
}

.prop-num {
    position: absolute;
    top: -0.55em;
    left: -0.05em;
    font-family: 'DM Serif Display', serif;
    font-weight: 400;
    font-feature-settings: "tnum" 1, "lnum" 0;
    color: var(--premise-gray);
    line-height: 1;
    z-index: 0;
    pointer-events: none;
    user-select: none;
}

.level-1 .prop-num { font-size: 5.5rem; top: -0.30em; left: -0.04em; }
.level-2 .prop-num { font-size: 3.5rem; top: -0.34em; }
.level-3 .prop-num { font-size: 2.5rem; top: -0.36em; }

.prop-title {
    position: relative;
    z-index: 1;
    font-family: 'DM Serif Display', serif;
    font-weight: 400;
    color: var(--axiom-black);
    line-height: 1.25;
    letter-spacing: -0.005em;
    max-width: 62ch;
}

.level-1 .prop-title {
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    padding-top: 0.6em;
    padding-left: 1.2em;
}

.level-2 .prop-title {
    font-size: clamp(1.2rem, 2vw, 1.5rem);
    padding-top: 0.5em;
    padding-left: 1.6em;
}

.level-3 .prop-title {
    font-size: clamp(1.05rem, 1.7vw, 1.2rem);
    padding-top: 0.4em;
    padding-left: 1.8em;
}

.prop-body {
    position: relative;
    z-index: 1;
    max-width: 70ch;
}

.level-1 .prop-body { padding-left: 0; }
.level-2 .prop-body { padding-left: 40px; }
.level-3 .prop-body { padding-left: 80px; }

.level-2 { margin-top: 3rem; }
.level-3 { margin-top: 2.5rem; }

.prop-body p {
    font-size: 1rem;
    line-height: 1.8;
    color: var(--axiom-black);
    margin-bottom: 1.5em;
}

.level-2 .prop-body p { font-size: 0.96rem; }
.level-3 .prop-body p { font-size: 0.92rem; color: var(--lemma-gray); }

.prop-body p:last-child {
    margin-bottom: 0;
}

/* ------------------------------------------------------------
   Proof Lines  --  thin rules between logical steps
   ------------------------------------------------------------ */
.proof-line {
    border: 0;
    height: var(--rule-thickness);
    background: var(--axiom-black);
    margin: 1.5em 0;
    width: 100%;
}

.proof-line.short {
    width: 38.2%;
}

/* ------------------------------------------------------------
   QED Footer
   ------------------------------------------------------------ */
.qed-footer {
    position: relative;
    z-index: 2;
    width: 100%;
    padding: 12rem 0 8rem;
    text-align: center;
    background: var(--proof-white);
}

.qed-square {
    display: inline-block;
    font-family: 'DM Serif Display', serif;
    font-size: 1.5rem;
    color: var(--axiom-black);
    line-height: 1;
}

/* ------------------------------------------------------------
   Reading-progress ribbon (top, ultra-thin)
   ------------------------------------------------------------ */
.reading-progress {
    position: fixed;
    top: 0;
    left: 0;
    height: 2px;
    width: 0;
    background: var(--truth-blue);
    z-index: 100;
    transition: width 0.05s linear;
}

/* ------------------------------------------------------------
   Selection
   ------------------------------------------------------------ */
::selection {
    background: var(--truth-blue);
    color: var(--proof-white);
}

/* ------------------------------------------------------------
   Responsive
   ------------------------------------------------------------ */
@media (max-width: 720px) {
    .treatise { padding: 4rem 1rem 2rem; }
    .level-1 .prop-num { font-size: 4rem; }
    .level-2 .prop-num { font-size: 2.6rem; }
    .level-3 .prop-num { font-size: 2rem; }
    .level-1 .prop-title { padding-left: 1em; }
    .level-2 .prop-title { padding-left: 1.4em; }
    .level-3 .prop-title { padding-left: 1.6em; }
    .level-2 .prop-body { padding-left: 20px; }
    .level-3 .prop-body { padding-left: 32px; }
    .qed-footer { padding: 8rem 0 5rem; }
}
