IIIF-Studio / frontend /src /index.css
Claude
feat(frontend): Sprint R1 β€” retro design system foundation
78dd858 unverified
/* ── Google Font: IBM Plex Mono (must precede @tailwind) ───────────── */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
/* ══════════════════════════════════════════════════════════════════════
IIIF Studio β€” Retro Design System (global styles)
Inspired by Xerox Star, Smalltalk-80, GEOS, classic Mac
══════════════════════════════════════════════════════════════════════ */
/* ── Base reset for retro look ─────────────────────────────────────── */
@layer base {
html {
font-family: 'IBM Plex Mono', 'Courier New', Courier, monospace;
font-size: 13px;
line-height: 1.5;
-webkit-font-smoothing: none;
-moz-osx-font-smoothing: unset;
background-color: #c0c0c0;
color: #000000;
}
body {
margin: 0;
padding: 0;
min-height: 100vh;
}
/* Disable subpixel antialiasing for that crisp pixel look */
* {
text-rendering: optimizeSpeed;
}
/* Focus ring: dotted black outline (classic retro) */
*:focus-visible {
outline: 1px dotted #000000;
outline-offset: 1px;
}
/* Selection: classic inverted */
::selection {
background-color: #000080;
color: #ffffff;
}
}
/* ── Retro scrollbar (Windows 3.1 style) ───────────────────────────── */
@layer components {
/* Webkit-based browsers */
.retro-scroll::-webkit-scrollbar {
width: 16px;
height: 16px;
}
.retro-scroll::-webkit-scrollbar-track {
background:
repeating-conic-gradient(
#c0c0c0 0% 25%, #dfdfdf 0% 50%
) 50% / 2px 2px;
}
.retro-scroll::-webkit-scrollbar-thumb {
background-color: #c0c0c0;
border: 1px solid #000000;
box-shadow:
inset -1px -1px 0 #808080,
inset 1px 1px 0 #ffffff;
}
.retro-scroll::-webkit-scrollbar-button {
background-color: #c0c0c0;
border: 1px solid #000000;
box-shadow:
inset -1px -1px 0 #808080,
inset 1px 1px 0 #ffffff;
display: block;
height: 16px;
width: 16px;
}
.retro-scroll::-webkit-scrollbar-corner {
background-color: #c0c0c0;
}
/* Firefox */
.retro-scroll {
scrollbar-width: auto;
scrollbar-color: #c0c0c0 #dfdfdf;
}
}
/* ── Desktop dithered background ───────────────────────────────────── */
@layer utilities {
.bg-retro-dither {
background-color: #c0c0c0;
background-image: url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='1' height='1' fill='%23a0a0a0'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23a0a0a0'/%3E%3C/svg%3E");
background-repeat: repeat;
}
.bg-retro-dither-dark {
background-color: #808080;
background-image: url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='1' height='1' fill='%23606060'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23606060'/%3E%3C/svg%3E");
background-repeat: repeat;
}
.bg-retro-dither-light {
background-color: #dfdfdf;
background-image: url("data:image/svg+xml,%3Csvg width='4' height='4' viewBox='0 0 4 4' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='1' height='1' fill='%23c8c8c8'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23c8c8c8'/%3E%3C/svg%3E");
background-repeat: repeat;
}
/* Horizontal lines pattern */
.bg-retro-lines {
background-color: #c0c0c0;
background-image: repeating-linear-gradient(
0deg,
transparent,
transparent 1px,
#a0a0a0 1px,
#a0a0a0 2px
);
background-size: 100% 4px;
}
}