/* * Intent's whole stylesheet: a thin layer over browser defaults. * If this file fails to load, layout should suffer but look-and-feel should not. * Colors come from the browser via color-scheme; no custom palette. */ :root { color-scheme: light dark; /* The same system colours the browser would use, made explicit so tools (and embeds) that can't see the canvas don't assume black on white. */ background-color: Canvas; color: CanvasText; } :root[data-theme="light"] { color-scheme: light; } :root[data-theme="dark"] { color-scheme: dark; } body { max-width: 72rem; margin: 0 auto; padding: 0 1rem; line-height: 1.5; } header, footer { padding-block: 1rem; } nav ul { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1.5rem; margin: 0; padding: 0; list-style: none; } nav form { margin: 0; } .breadcrumb { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 0.5rem; padding: 0; list-style: none; } .breadcrumb li + li::before { content: "/"; content: "/" / ""; margin-inline-end: 0.5rem; } textarea { box-sizing: border-box; width: 100%; max-width: 80ch; } table { border-collapse: collapse; } .diff tbody + tbody { border-top: 1px solid; } .diff td:last-child { white-space: pre-wrap; font-family: monospace; } th, td { padding: 0.25rem 0.75rem 0.25rem 0; text-align: start; vertical-align: top; } p, li, dd { max-width: 70ch; } img { max-width: 100%; height: auto; } :focus-visible { outline: 2px solid currentColor; outline-offset: 2px; } /* Discussion. Threads and comments are indented by a rule, nothing more. */ .thread, .timeline > li { margin-block: 0.75rem; } .thread { padding-inline-start: 0.75rem; border-inline-start: 2px solid color-mix(in srgb, CanvasText 30%, Canvas); } .comment { margin-block: 0.75rem; } .comment > header { font-size: 0.9em; } .timeline { padding: 0; list-style: none; } .actions { display: flex; flex-wrap: wrap; align-items: start; gap: 0.5rem 1rem; } form.inline { display: inline; } .line-comment > summary { font-size: 0.85em; } .block:target, .comment:target, .thread:target { outline: 2px dashed currentColor; outline-offset: 4px; } /* Files. Pins are an SVG overlay positioned in percentages, so they track the image. */ .pinboard { position: relative; display: inline-block; margin: 0; } .pinboard img { display: block; } .pinboard.placing img { cursor: crosshair; } .pins { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; } .pins a { pointer-events: auto; } .pins circle { fill: Mark; stroke: MarkText; stroke-width: 2; } .pins circle.pending { fill: none; stroke-dasharray: 4 3; } .pins text { fill: MarkText; font: bold 12px sans-serif; text-anchor: middle; dominant-baseline: central; } .pins a:focus-visible circle { stroke-width: 4; } .prototype { width: 100%; height: 70vh; border: 1px solid; } pre.quote { white-space: pre-wrap; padding-inline-start: 0.75rem; border-inline-start: 2px solid; } .skip-link { position: absolute; left: -100vw; } .skip-link:focus { position: static; } .muted { color: color-mix(in srgb, CanvasText 70%, Canvas); } .visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }