File size: 3,309 Bytes
aa682ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5585e8d
aa682ab
 
 
 
 
 
5585e8d
 
aa682ab
 
 
 
 
 
 
 
 
 
 
 
5585e8d
 
aa682ab
 
 
 
 
 
 
 
5585e8d
aa682ab
 
5585e8d
aa682ab
 
 
 
 
 
 
 
 
5585e8d
 
aa682ab
 
 
 
 
 
 
 
 
 
5585e8d
aa682ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0324416
 
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
128
:root {
  color-scheme: light dark;
  --bg: #fafaf9;
  --fg: #1c1917;
  --muted: #78716c;
  --border: #d6d3d1;
  --panel: #ffffff;
  --accent: #1d4ed8;
  --accent-fg: #ffffff;
  --error: #b91c1c;
  --person: #fde68a;
  --address: #bbf7d0;
  --email: #bfdbfe;
  --phone: #ddd6fe;
  --iban: #fecaca;
  --national-id: #fbcfe8;
  --birth-date: #fed7aa;
  --identifier: #e7e5e4;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1c1917;
    --fg: #f5f5f4;
    --muted: #a8a29e;
    --border: #44403c;
    --panel: #292524;
    --accent: #60a5fa;
    --accent-fg: #0c0a09;
    --error: #f87171;
    --person: #854d0e;
    --address: #166534;
    --email: #1e40af;
    --phone: #5b21b6;
    --iban: #991b1b;
    --national-id: #9d174d;
    --birth-date: #9a3412;
    --identifier: #57534e;
  }
}

* { box-sizing: border-box; }

body {
  margin: 0 auto;
  max-width: 960px;
  padding: 24px 16px 48px;
  background: var(--bg);
  color: var(--fg);
  font: 16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif;
}

h1 { margin: 0 0 4px; font-size: 1.8rem; }
h2 { margin: 28px 0 8px; font-size: 1.1rem; }
.lead { margin: 0 0 8px; }
.muted { color: var(--muted); font-weight: normal; font-size: 0.9rem; }
.status { margin: 0; font-size: 0.9rem; color: var(--muted); }
.status.warn { color: var(--error); }
.demo {
  margin: 8px 0 0;
  padding: 8px 12px;
  border: 1px solid var(--error);
  border-radius: 6px;
  color: var(--error);
}

textarea, .highlighted {
  width: 100%;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--panel);
  color: var(--fg);
  font: 14px/1.55 ui-monospace, "SF Mono", Menlo, Consolas, monospace;
}
textarea { resize: vertical; }
.highlighted { white-space: pre-wrap; overflow-wrap: anywhere; min-height: 4em; }

mark {
  padding: 0 2px;
  border-radius: 3px;
  color: inherit;
}
mark .tag {
  margin-left: 4px;
  font-size: 0.75em;
  opacity: 0.8;
}

.actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }

button {
  padding: 8px 16px;
  border: 1px solid var(--accent);
  border-radius: 6px;
  background: var(--accent);
  color: var(--accent-fg);
  font: inherit;
  cursor: pointer;
}
button.secondary { background: transparent; color: var(--accent); }
button:disabled { opacity: 0.6; cursor: wait; }
button:focus-visible, textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.error { color: var(--error); }

.legend { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; font-size: 0.85rem; }
.legend span { padding: 2px 8px; border-radius: 999px; }

table { border-collapse: collapse; min-width: 240px; }
th, td { padding: 4px 12px; border-bottom: 1px solid var(--border); text-align: left; }
td:last-child, th:last-child { text-align: right; }

.t-PERSON { background: var(--person); }
.t-ADDRESS { background: var(--address); }
.t-EMAIL { background: var(--email); }
.t-PHONE { background: var(--phone); }
.t-IBAN { background: var(--iban); }
.t-NATIONAL_ID { background: var(--national-id); }
.t-BIRTH_DATE { background: var(--birth-date); }
.t-IDENTIFIER { background: var(--identifier); }

footer { margin-top: 40px; }

progress { width: 100%; max-width: 420px; height: 8px; margin-top: 6px; }

.notice { margin: 8px 0 4px; font-size: 0.95rem; }