File size: 4,236 Bytes
78dd858
 
 
eec7490
 
 
78dd858
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* ── 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;
  }
}