constructelligence commited on
Commit
7b63b24
·
verified ·
1 Parent(s): fcb5ab9

Upload console/style.css with huggingface_hub

Browse files
Files changed (1) hide show
  1. console/style.css +150 -0
console/style.css ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --bg: #f4f5f7; --surface: #ffffff; --surface-2: #eef0f3; --text: #16181d; --muted: #5d6470;
3
+ --line: #d9dde3; --accent: #2563eb; --accent-text: #ffffff;
4
+ --ok: #138a4b; --ok-bg: #e3f5ea; --warn: #9a5b00; --warn-bg: #fff2d9; --bad: #b42318; --bad-bg: #fde7e5;
5
+ --info: #1d4ed8; --info-bg: #e3ebfd;
6
+ --paint: #2ecc71; --keepout: #e74c3c; --damage: #ff8c00; --uncertain: #f1c40f; --touchup: #00d2ff;
7
+ --paths: #4aa3ff; --edits: #a855f7;
8
+ --radius: 10px;
9
+ }
10
+ @media (prefers-color-scheme: dark) {
11
+ :root:not([data-theme="light"]) {
12
+ --bg: #0f1115; --surface: #171a20; --surface-2: #1f232b; --text: #e8eaee; --muted: #9aa3b2;
13
+ --line: #2a2f39; --accent: #4f8cff;
14
+ --ok: #4ade80; --ok-bg: #12301f; --warn: #fbbf24; --warn-bg: #33270b; --bad: #f87171; --bad-bg: #3a1513;
15
+ --info: #93b4ff; --info-bg: #17223d;
16
+ }
17
+ }
18
+ :root[data-theme="dark"] {
19
+ --bg: #0f1115; --surface: #171a20; --surface-2: #1f232b; --text: #e8eaee; --muted: #9aa3b2;
20
+ --line: #2a2f39; --accent: #4f8cff;
21
+ --ok: #4ade80; --ok-bg: #12301f; --warn: #fbbf24; --warn-bg: #33270b; --bad: #f87171; --bad-bg: #3a1513;
22
+ --info: #93b4ff; --info-bg: #17223d;
23
+ }
24
+ * { box-sizing: border-box; }
25
+ html, body { margin: 0; height: 100%; }
26
+ body { background: var(--bg); color: var(--text); font: 14px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
27
+ button, input, textarea { font: inherit; color: inherit; }
28
+ .muted { color: var(--muted); }
29
+ .small { font-size: 12.5px; }
30
+ .warn { color: var(--warn); }
31
+ [hidden] { display: none !important; }
32
+
33
+ .top { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px;
34
+ background: var(--surface); border-bottom: 1px solid var(--line); }
35
+ .brand { display: flex; align-items: center; gap: 10px; }
36
+ .logo { width: 22px; height: 22px; border-radius: 6px; background: linear-gradient(135deg, var(--paint), var(--paths)); }
37
+ .model { font-size: 12.5px; text-align: right; }
38
+ .banner { background: var(--warn-bg); color: var(--warn); padding: 8px 16px; border-bottom: 1px solid var(--line); font-size: 13px; }
39
+
40
+ .layout { display: grid; grid-template-columns: 250px minmax(0, 1fr) 340px; height: calc(100vh - 49px); }
41
+ .jobs, .panel { background: var(--surface); padding: 14px; overflow-y: auto; }
42
+ .jobs { border-right: 1px solid var(--line); }
43
+ .panel { border-left: 1px solid var(--line); }
44
+ .section { font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin: 18px 0 8px; font-weight: 600; }
45
+
46
+ .drop { display: flex; flex-direction: column; gap: 2px; align-items: center; justify-content: center; text-align: center;
47
+ border: 1.5px dashed var(--line); border-radius: var(--radius); padding: 18px 10px; cursor: pointer; background: var(--surface-2); }
48
+ .drop:hover, .drop.over { border-color: var(--accent); }
49
+ .drop input { position: absolute; width: 1px; height: 1px; opacity: 0; }
50
+ .drop-title { font-weight: 600; }
51
+ .field { width: 100%; margin-top: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
52
+ .field:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
53
+
54
+ .job-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
55
+ .job-list button { width: 100%; text-align: left; border: 1px solid var(--line); background: var(--surface); border-radius: 8px;
56
+ padding: 8px 10px; cursor: pointer; display: grid; gap: 2px; }
57
+ .job-list button.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
58
+ .job-list .name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
59
+
60
+ .pill { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; justify-self: start; }
61
+ .pill.ready_to_paint, .pill.complete { background: var(--ok-bg); color: var(--ok); }
62
+ .pill.prep_required, .pill.touch_up_only { background: var(--warn-bg); color: var(--warn); }
63
+ .pill.blocked { background: var(--bad-bg); color: var(--bad); }
64
+ .pill.approved { background: var(--info-bg); color: var(--info); }
65
+
66
+ .viewer { display: flex; flex-direction: column; min-width: 0; }
67
+ .toolbar { display: flex; flex-wrap: wrap; gap: 8px 16px; justify-content: space-between; padding: 10px 14px;
68
+ border-bottom: 1px solid var(--line); background: var(--surface); }
69
+ .group { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
70
+ .chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px; border: 1px solid var(--line); border-radius: 999px;
71
+ cursor: pointer; font-size: 12.5px; user-select: none; background: var(--surface); }
72
+ .chip input { margin: 0; accent-color: var(--accent); }
73
+ .sw { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
74
+ .sw-paint { background: var(--paint); } .sw-keepout { background: var(--keepout); } .sw-damage { background: var(--damage); }
75
+ .sw-uncertain { background: var(--uncertain); } .sw-touchup { background: var(--touchup); } .sw-paths { background: var(--paths); }
76
+ .sw-edits { background: var(--edits); }
77
+ .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
78
+ .seg button { border: 0; background: var(--surface); padding: 5px 10px; cursor: pointer; border-right: 1px solid var(--line); }
79
+ .seg button:last-child { border-right: 0; }
80
+ .seg button.on { background: var(--accent); color: var(--accent-text); }
81
+ .size { display: inline-flex; align-items: center; gap: 6px; }
82
+ .size input { width: 90px; accent-color: var(--accent); }
83
+ button.primary, button.ghost, a.button { border-radius: 8px; padding: 7px 14px; cursor: pointer; border: 1px solid var(--line);
84
+ background: var(--surface); text-decoration: none; display: inline-block; }
85
+ button.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-text); font-weight: 600; }
86
+ button:disabled { opacity: .45; cursor: not-allowed; }
87
+
88
+ .stage-wrap { flex: 1; overflow: auto; display: flex; align-items: flex-start; justify-content: center; padding: 16px; background: var(--surface-2); }
89
+ .empty { margin: auto; color: var(--muted); }
90
+ .stage { position: relative; max-width: 100%; line-height: 0; border-radius: 6px; overflow: hidden; box-shadow: 0 1px 6px rgba(0,0,0,.15); touch-action: none; }
91
+ .stage #photo { display: block; max-width: 100%; max-height: calc(100vh - 190px); width: auto; height: auto; }
92
+ .layer { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
93
+ .edits { opacity: .45; }
94
+ .stage.drawing .edits { pointer-events: auto; cursor: none; }
95
+ .cursor { position: absolute; border: 2px solid #fff; border-radius: 50%; pointer-events: none; mix-blend-mode: difference; transform: translate(-50%, -50%); }
96
+ .legend { padding: 8px 14px; background: var(--surface); border-top: 1px solid var(--line); }
97
+
98
+ .decision { border-radius: var(--radius); padding: 12px 14px; background: var(--surface-2); }
99
+ .decision h3 { margin: 0 0 2px; font-size: 18px; }
100
+ .decision.ready_to_paint, .decision.complete { background: var(--ok-bg); color: var(--ok); }
101
+ .decision.prep_required, .decision.touch_up_only { background: var(--warn-bg); color: var(--warn); }
102
+ .decision.blocked { background: var(--bad-bg); color: var(--bad); }
103
+ .decision.approved { background: var(--info-bg); color: var(--info); }
104
+ .decision p { margin: 0; color: var(--text); font-size: 13px; }
105
+ .reasons { margin: 10px 0 0; padding-left: 18px; }
106
+ .reasons li { margin: 3px 0; }
107
+ .reasons .bad { color: var(--bad); } .reasons .warn { color: var(--warn); }
108
+ .confirmations { display: grid; gap: 6px; margin-top: 10px; }
109
+ .confirmations label { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; padding: 6px 8px; border-radius: 8px; border: 1px solid var(--line); }
110
+ .confirmations label.relevant { border-color: var(--warn); }
111
+ .confirmations input { margin-top: 3px; accent-color: var(--accent); }
112
+ .row { display: flex; gap: 10px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
113
+ .areas { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; margin: 0; }
114
+ .areas dt { white-space: nowrap; }
115
+ .areas .full { grid-column: 1 / -1; text-align: right; }
116
+ .areas dt { color: var(--muted); } .areas dd { margin: 0; font-variant-numeric: tabular-nums; text-align: right; font-weight: 600; }
117
+ /* A paint colour chip next to the coat's name in the panel. */
118
+ .swatch { display: inline-block; width: 0.9em; height: 0.9em; border-radius: 3px; border: 1px solid rgba(0, 0, 0, 0.3); vertical-align: -0.05em; }
119
+ .steps { margin: 0; padding-left: 20px; }
120
+ .steps > li { margin: 6px 0; }
121
+ .steps .step-name { font-weight: 600; text-transform: capitalize; }
122
+ .steps ul { list-style: none; padding: 0; margin: 4px 0 0; display: grid; gap: 4px; }
123
+ .task { border: 1px solid var(--line); border-radius: 8px; padding: 6px 8px; font-size: 12.5px; cursor: default; }
124
+ .task:hover, .task.hl { border-color: var(--damage); }
125
+ .task b { text-transform: capitalize; }
126
+ .more summary { cursor: pointer; color: var(--accent); margin: 4px 0; }
127
+ .more ul { margin-top: 4px; }
128
+
129
+ svg .prep-zone { fill: none; stroke: var(--damage); stroke-width: 2; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
130
+ svg .damage { fill: var(--damage); fill-opacity: .25; stroke: var(--damage); stroke-width: 2; vector-effect: non-scaling-stroke; }
131
+ svg .damage.hl { fill-opacity: .55; stroke-width: 3; }
132
+ svg .roller { stroke: var(--paths); stroke-width: 2; vector-effect: non-scaling-stroke; }
133
+ svg .trim { stroke: var(--edits); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
134
+ svg .prep-path { stroke: var(--damage); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
135
+ svg .touch-path { stroke: var(--touchup); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
136
+
137
+ @media (max-width: 1100px) {
138
+ .layout { grid-template-columns: 220px minmax(0, 1fr); height: auto; }
139
+ .panel { grid-column: 1 / -1; border-left: 0; border-top: 1px solid var(--line); }
140
+ }
141
+ @media (max-width: 720px) {
142
+ .layout { grid-template-columns: 1fr; }
143
+ .jobs { border-right: 0; border-bottom: 1px solid var(--line); }
144
+ .stage-wrap { padding: 8px; }
145
+ .stage #photo { max-height: 60vh; }
146
+ .toolbar { padding: 8px; }
147
+ .chip { padding: 3px 7px; font-size: 12px; }
148
+ .panel, .jobs { padding: 12px 16px; }
149
+ .top { padding: 10px 16px; }
150
+ }