:root{ --gutter: 2rem; --margin: 420px; --body-pad: 1rem; --content: clamp( var(--content-min), calc(100vi - 2*var(--body-pad) - 2*(var(--margin) + var(--gutter))), var(--content-max) ); --content-min: 60ch; --content-max: 880px; --bleed: 48px; --fullwidth-cap: 860px; --bg: #faf9f6; --fg: #000000; --link: #1a0dab; --heading: #004c99; --code-bg: #f0f0f0; --active-toc: #cacaca; --note-color: #555; --note-bg: transparent; --border: #d7d7d7; --chip-bg: #f0f0f0; --chip-fg: #444; --muted: #666; --kb-bg-completed: #e6f4ea; --kb-bg-manager-review: #fff4e5; --kb-bg-in-progress: #e8f0fe; --kb-bg-not-started: #f1f3f5; --kb-bg-comments: #fdecea; --kb-column-border: rgba(0,0,0,0.06); --kb-card-bg: #ffffff; --kb-card-text: #1f2933; } :root[data-theme="dark"]{ --bg: #0f1115; --fg: #e6e6e6; --link: #8ab4ff; --heading: #9ecbff; --code-bg: #1a1d24; --note-color: #c2c7cf; --note-bg: transparent; --border: #2a2f3a; --chip-bg: #1f2330; --chip-fg: #cfd3da; --muted: #a9b0bb; --active-toc: #313131; --kb-bg-completed: #1e3a2b; --kb-bg-manager-review: #3a2f1e; --kb-bg-in-progress: #1f2a44; --kb-bg-not-started: #2a2d31; --kb-bg-comments: #3b1f24; --kb-column-border: rgba(255,255,255,0.08); --kb-card-bg: #16181c; --kb-card-text: #e5e7eb; } @font-face { font-family: 'Times'; src: url('../fonts/times.ttf') format('ttf'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Noto'; src: url('../fonts/NotoSans-Regular.ttf') format('ttf'); font-weight: normal; font-style: normal; } html, body{ background-color: var(--bg); color: var(--fg); font-size: 16px; transition: background-color .3s, color .3s; margin: 0; font-family: 'Noto', sans-serif; } h1, h2, h3{ color: var(--heading); } a { color: var(--link); text-decoration: none; } a:hover { text-decoration: underline; } .banner-header{ display: flex; align-items: center; justify-content: flex-start; flex-wrap: wrap; padding: .5rem 1rem; border-radius: 6px; } .banner-logo{ height: 80px; width: auto; margin-right: 1.5rem; border-radius: 50%; } nav{ display: flex; gap: 1rem; font-weight: 600; font-size: 1.1rem; } #preamble.status{ max-width: var(--content); margin-left: auto; margin-right: auto; padding-left: var(--body-pad); padding-right: var(--body-pad); box-sizing: content-box; } #preamble .banner-header, #preamble #updated{ max-width: 100%; } footer{ color: var(--fg); padding: 1rem; margin-top: 2rem; border-radius: 6px; text-align: center; font-size: .9rem; font-style: italic; } #content.content{ max-width: var(--content); margin-left: auto !important; margin-right: auto !important; padding-left: var(--body-pad); padding-right: var(--body-pad); box-sizing: content-box; position: relative; } #content .figure, #content img:not(.fullwidth){ max-width: 100%; height: auto; } ul, ol { margin: 1rem 0 1.5rem 1.5rem; padding: 0; line-height: 1.5; } ul { list-style: none; } ul li { position: relative; padding-left: 1.2em; } ul li::before { content: "•"; position: absolute; left: 0; top: 0; color: var(--heading); font-weight: bold; } ol { counter-reset: list-counter; list-style: none; } ol li { counter-increment: list-counter; position: relative; padding-left: 1.8em; } ol li::before { content: counter(list-counter) "."; position: absolute; left: 0; top: 0; color: var(--heading); font-weight: bold; } li { margin-bottom: 8px; display: flow-root; } li::after { content: none; } li ul, li ol { margin-top: 0.5rem; margin-bottom: 0.5rem; } li ul li::before { content: "–"; font-weight: normal; color: var(--note-color); } li ol li::before { font-weight: normal; color: var(--note-color); } .epigraph { margin: 2rem auto; max-width: 80%; font-style: italic; } .epigraph blockquote { margin: 0; padding: 1rem 1.5rem; border-left: 4px solid var(--heading); background-color: rgba(0, 0, 0, 0.02); color: var(--fg); line-height: 1.6; } .epigraph blockquote footer { margin-top: 0.75rem; font-style: normal; font-size: 0.9em; color: var(--note-color); text-align: right; } .epigraph blockquote cite { font-style: italic; font-weight: 500; color: var(--link); } .epigraph blockquote::before, .epigraph blockquote::after { content: none; } .epigraph blockquote{ border-left-color: var(--heading); background-color: color-mix(in oklab, var(--bg) 94%, var(--fg) 6%); color: var(--fg); } .epigraph blockquote footer{ color: var(--muted); } .hidden { display: none !important; } .bp-x{ right:72px; } .bp-next,.bp-prev{ right:8px; } .bp-prev{ left:8px; } .bp-wrap{ transition: opacity .18s ease; } .bp-wrap.bp-fadeout{ opacity: 0; } .bp-controls{ padding-top: env(safe-area-inset-top, 0); padding-right: calc(env(safe-area-inset-right, 0) + 8px); } body.no-sidenotes { --body-pad: 0; --margin: 0; --gutter: 0; --content-min: 80ch; --content-max: 1200px; --content: clamp( var(--content-min), 100vi, var(--content-max) ); } /* ========================= NOTES BOARD ========================= */ #notes-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1.5rem; margin: 2.5rem 0; align-items: start; } /* ========================= NOTE CARD ========================= */ .note { position: relative; padding: 1rem 1rem 0.9rem; background: --code-bg; border-radius: 8px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08), 0 12px 24px rgba(0, 0, 0, 0.06); transform: rotate(var(--note-tilt, 0deg)); transition: transform 0.15s ease, box-shadow 0.15s ease; } /* subtle randomness */ .note:nth-child(3n) { --note-tilt: -0.6deg; } .note:nth-child(4n) { --note-tilt: 0.4deg; } .note:nth-child(5n) { --note-tilt: -0.3deg; } .note:hover { transform: rotate(0deg) translateY(-4px); box-shadow: 0 6px 14px rgba(0, 0, 0, 0.12), 0 18px 36px rgba(0, 0, 0, 0.10); } /* ========================= PIN ========================= */ .note::before { content: ""; position: absolute; top: 0.6rem; left: 50%; width: 10px; height: 10px; background: #c33; border-radius: 50%; transform: translateX(-50%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); opacity: 0.85; } /* ========================= META ========================= */ .note-meta { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.7rem; margin-bottom: 0.5rem; color: #555; } .note-author { font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; } .note-meta time { font-variant-numeric: tabular-nums; opacity: 0.7; } /* ========================= CONTENT ========================= */ .note-content { font-size: 0.95rem; line-height: 1.45; white-space: pre-wrap; color: --fg; } /* ========================= MOBILE TWEAKS ========================= */ @media (max-width: 600px) { #notes-wall { grid-template-columns: 1fr; } .note { transform: none; } .note::before { left: 0.75rem; transform: none; } } /* ========================= NOTES FORM ========================= */ #notes-form-wrapper { margin-top: 3rem; display: flex; justify-content: center; } #notes-form { width: 100%; max-width: 420px; background: --bg; padding: 1.25rem 1.25rem 1.1rem; border-radius: 10px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08), 0 14px 30px rgba(0, 0, 0, 0.06); position: relative; } /* pin */ #notes-form::before { content: ""; position: absolute; top: 0.6rem; left: 50%; width: 12px; height: 12px; background: #c33; border-radius: 50%; transform: translateX(-50%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35); } /* ========================= LABELS ========================= */ #notes-form label { display: block; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; color: #666; margin-bottom: 0.25rem; } /* ========================= INPUTS ========================= */ #notes-form input, #notes-form textarea { width: 100%; border: none; background: transparent; font-family: inherit; font-size: 0.95rem; line-height: 1.45; padding: 0.3rem 0; margin-bottom: 0.9rem; border-bottom: 1px solid #ddd; } #notes-form textarea { resize: vertical; min-height: 4.5rem; } /* focus state */ #notes-form input:focus, #notes-form textarea:focus { outline: none; border-bottom-color: #999; } /* placeholder */ #notes-form ::placeholder { color: #aaa; } /* ========================= SUBMIT BUTTON ========================= */ #notes-form button { margin-top: 0.5rem; padding: 0.35rem 0.9rem; font-family: inherit; font-size: 0.8rem; letter-spacing: 0.06em; text-transform: uppercase; border-radius: 999px; border: none; background: #222; color: #fff; cursor: pointer; float: right; } #notes-form button:hover { background: #000; } #notes-form button:disabled { opacity: 0.5; cursor: not-allowed; } /* ========================= MOBILE ========================= */ @media (max-width: 600px) { #notes-form { max-width: 100%; } }