Restore

O Operator
Restore

Restore file to captured state

Every captured change carries its SHA-256-addressed content in BLOB_STORE. Restoring writes that content back to the original path — current file gets backed up to <path>.drift_restore_backup_<epoch> before overwrite.

What will change
Preview -- nothing has been written yet.
Target file/var/www/vhosts/3dshawn.com/site1/assets/styles/drift_sense.css
SiteDriftSense self-monitor on local
Kindlocal
Captured at2026-07-10 23:21:47
Captured SHA1369c2c778fe3905bbf40564e26ac8da0caaa78fab534c86a66a3eb15a3f6d40
Current state on disk
Live check just now. If SHAs match, the restore is a no-op.
File presentyes
Size19193 bytes
Current SHAd2605008feac
Same as captured?no -- restore will change it
What restore will change — live diff
Left column shows current on-disk content; right shows what restore will write. +0 additions, -80 deletions, 542 unchanged context lines.
11/* =========================================================================
22 * DriftSense -- design system + component styles
33 * -------------------------------------------------------------------------
44 * Palette: midnight navy background + steel-teal primary + amber warnings.
55 * Distinct from every portfolio site (cyan/indigo/violet/emerald/burgundy/amber)
66 * -- reads as "watchtower / observatory / cool precision instrument."
77 * ========================================================================= */
88
99:root {
1010 /* Backgrounds -- deep, cool, with subtle blue tint */
1111 --bg-0: #030710;
1212 --bg-1: #0a1220;
1313 --bg-2: #131e30;
1414 --bg-3: #1a2740;
1515 --bg-panel: linear-gradient(180deg, #131e30 0%, #0a1220 100%);
1616
1717 /* Borders */
1818 --border: #223050;
1919 --border-hi: #2d3d5f;
2020 --border-focus: #14b8a6;
2121
2222 /* Text */
2323 --text: #e5edf5;
2424 --text-dim: #96a3b8;
2525 --text-muted: #6a7a94;
2626
2727 /* Accents */
2828 --accent: #14b8a6; /* Teal -- primary, "sense" color */
2929 --accent-hi: #2dd4bf;
3030 --accent-deep: #0f766e;
3131 --accent-glow: rgba(20, 184, 166, 0.35);
3232
3333 --accent-warn: #f59e0b; /* Amber -- drift alert */
3434 --accent-warn-hi: #fbbf24;
3535
3636 --accent-danger: #f43f5e; /* Rose -- critical */
3737 --accent-danger-hi: #fb7185;
3838
3939 --accent-ok: #34d399; /* Emerald -- clean baseline */
4040 --accent-ok-hi: #6ee7b7;
4141
4242 --accent-info: #38bdf8; /* Sky-blue -- info notices */
4343
4444 /* Typography */
4545 --mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
4646 --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
4747
4848 /* Sizing */
4949 --radius: 12px;
5050 --radius-sm: 8px;
5151 --radius-pill: 999px;
5252 --sidebar-w: 240px;
5353}
5454
5555* { box-sizing: border-box; }
5656html, body { margin: 0; padding: 0; }
5757body {
5858 font-family: var(--sans);
5959 color: var(--text);
6060 background: var(--bg-0);
6161 background-image:
6262 radial-gradient(ellipse 1000px 600px at 15% 0%, rgba(20, 184, 166, 0.10), transparent 65%),
6363 radial-gradient(ellipse 900px 500px at 90% 100%, rgba(56, 189, 248, 0.08), transparent 65%);
6464 background-attachment: fixed;
6565 line-height: 1.6;
6666 -webkit-font-smoothing: antialiased;
6767 min-height: 100vh;
6868}
6969
7070/* =========================================================================
7171 * APP SHELL -- sidebar + main
7272 * ========================================================================= */
7373.app {
7474 display: grid;
7575 grid-template-columns: var(--sidebar-w) 1fr;
7676 min-height: 100vh;
7777}
7878@media (max-width: 780px) {
7979 .app { grid-template-columns: 1fr; }
8080 .sidebar { display: none; }
8181}
8282
8383/* Sidebar */
8484.sidebar {
8585 background: linear-gradient(180deg, #0a1220 0%, #050810 100%);
8686 border-right: 1px solid var(--border);
8787 padding: 20px 0;
8888 position: sticky; top: 0;
8989 height: 100vh;
9090 overflow-y: auto;
9191}
9292.sidebar-brand {
9393 padding: 8px 20px 20px;
9494 display: flex;
9595 align-items: center;
9696 gap: 12px;
9797 text-decoration: none;
9898 color: var(--text);
9999 border-bottom: 1px solid var(--border);
100100 margin-bottom: 12px;
101101}
102102.sidebar-brand .logo {
103103 width: 38px; height: 38px;
104104 border-radius: 10px;
105105 background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
106106 display: grid; place-items: center;
107107 color: #030710;
108108 font-family: var(--mono);
109109 font-weight: 800;
110110 font-size: 14px;
111111 box-shadow: 0 4px 14px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,0.15);
112112}
113113.sidebar-brand .name {
114114 font-weight: 700;
115115 font-size: 15px;
116116 letter-spacing: -0.01em;
117117}
118118.sidebar-brand .name .accent { color: var(--accent-hi); }
119119.sidebar-brand .role {
120120 font-size: 10px;
121121 letter-spacing: 1.6px;
122122 text-transform: uppercase;
123123 color: var(--text-muted);
124124 font-weight: 700;
125125 margin-top: 2px;
126126}
127127.sidebar-section-label {
128128 font-size: 10.5px;
129129 letter-spacing: 1.6px;
130130 text-transform: uppercase;
131131 color: var(--text-muted);
132132 font-weight: 700;
133133 padding: 12px 20px 6px;
134134}
135135.sidebar-link {
136136 display: flex;
137137 align-items: center;
138138 gap: 11px;
139139 padding: 9px 20px;
140140 color: var(--text-dim);
141141 text-decoration: none;
142142 font-size: 13.5px;
143143 border-left: 2px solid transparent;
144144 transition: color .12s ease, background .12s ease, border-left-color .12s ease;
145145}
146146.sidebar-link svg { width: 15px; height: 15px; flex: 0 0 auto; opacity: 0.85; }
147147.sidebar-link:hover { color: var(--text); background: rgba(255,255,255,.02); }
148148.sidebar-link.active {
149149 color: var(--accent-hi);
150150 background: linear-gradient(90deg, rgba(20, 184, 166, .12), transparent 90%);
151151 border-left-color: var(--accent);
152152}
153153.sidebar-link.active svg { opacity: 1; }
154
155/* Trend arrows on KPI tiles (Wave 5) */
156.ds-trend {
157 display: inline-flex;
158 align-items: center;
159 gap: 3px;
160 padding: 2px 8px;
161 border-radius: 999px;
162 font-size: 10.5px;
163 font-weight: 700;
164 letter-spacing: 0.3px;
165 vertical-align: 3px;
166 margin-left: 8px;
167}
168.ds-trend.ds-trend-up {
169 background: rgba(52, 211, 153, .14);
170 color: #86efac;
171 border: 1px solid rgba(52, 211, 153, .35);
172}
173.ds-trend.ds-trend-down {
174 background: rgba(244, 63, 94, .14);
175 color: #fda4af;
176 border: 1px solid rgba(244, 63, 94, .35);
177}
178.ds-trend.ds-trend-flat {
179 background: rgba(148, 163, 184, .14);
180 color: var(--text-dim);
181 border: 1px solid rgba(148, 163, 184, .30);
182}
183.ds-trend svg {
184 width: 10px; height: 10px;
185}
186
187/* Site links in sidebar (Wave 5) */
188.ds-site-link {
189 font-size: 12.5px;
190 padding: 6px 20px 6px 20px;
191}
192.ds-site-badge {
193 display: inline-grid;
194 place-items: center;
195 width: 22px; height: 22px;
196 border-radius: 6px;
197 background: linear-gradient(135deg, rgba(20, 184, 166, .18), rgba(6, 78, 74, .12));
198 border: 1px solid rgba(20, 184, 166, .25);
199 color: var(--accent-hi);
200 font-size: 9.5px;
201 font-weight: 800;
202 letter-spacing: 0;
203 flex: 0 0 auto;
204}
205.ds-site-label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
206.ds-site-dot {
207 width: 8px; height: 8px; border-radius: 50%;
208 flex: 0 0 auto;
209 background: #334155;
210}
211.ds-site-dot.ds-dot-live { background: #34d399; box-shadow: 0 0 6px rgba(52,211,153,.6); }
212.ds-site-dot.ds-dot-warm { background: #f59e0b; box-shadow: 0 0 6px rgba(245,158,11,.5); }
213.ds-site-dot.ds-dot-hot { background: #f43f5e; box-shadow: 0 0 8px rgba(244,63,94,.7); }
214.ds-site-dot.ds-dot-quiet { background: #334155; }
215
216/* Stable release links in sidebar (Wave 5) */
217.ds-stable-link {
218 font-size: 12.5px;
219 padding: 6px 20px;
220}
221.ds-stable-tag {
222 display: inline-grid;
223 place-items: center;
224 width: 20px; height: 20px;
225 border-radius: 5px;
226 background: linear-gradient(135deg, #34d399, #0f766e);
227 color: #052e2b;
228 font-size: 10.5px;
229 font-weight: 900;
230 flex: 0 0 auto;
231 box-shadow: 0 0 0 1px rgba(52,211,153,.35);
232}
233.ds-stable-link:hover .ds-stable-tag { box-shadow: 0 0 12px rgba(52,211,153,.7); }
234154
235155/* Main content area */
236156.app-main { min-width: 0; }
237157.topbar {
238158 padding: 16px 32px;
239159 border-bottom: 1px solid var(--border);
240160 display: flex;
241161 align-items: center;
242162 gap: 16px;
243163 background: rgba(10, 18, 32, 0.5);
244164 backdrop-filter: blur(8px);
245165 position: sticky; top: 0; z-index: 10;
246166}
247167.topbar h1 { margin: 0; font-size: 15px; font-weight: 600; letter-spacing: .3px; }
248168.topbar-spacer { flex: 1; }
249169.topbar-user {
250170 display: flex;
251171 align-items: center;
252172 gap: 10px;
253173 padding: 5px 12px 5px 5px;
254174 background: var(--bg-2);
255175 border: 1px solid var(--border);
256176 border-radius: var(--radius-pill);
257177 font-size: 12.5px;
258178}
259179.topbar-user .initials {
260180 width: 26px; height: 26px;
261181 border-radius: 50%;
262182 background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
263183 color: #030710;
264184 display: grid; place-items: center;
265185 font-size: 11px; font-weight: 700;
266186 font-family: var(--mono);
267187}
268188
269189.app-content {
270190 padding: 32px 40px 96px;
271191 max-width: 1400px;
272192}
273193
274194/* =========================================================================
275195 * PAGE HEAD
276196 * ========================================================================= */
277197.page-head { margin-bottom: 32px; }
278198.page-eyebrow {
279199 display: inline-flex;
280200 align-items: center;
281201 gap: 8px;
282202 font-size: 10.5px;
283203 letter-spacing: 1.8px;
284204 text-transform: uppercase;
285205 color: var(--accent-hi);
286206 font-weight: 700;
287207 padding: 5px 12px;
288208 background: rgba(20, 184, 166, .10);
289209 border: 1px solid rgba(20, 184, 166, .30);
290210 border-radius: var(--radius-pill);
291211 margin-bottom: 14px;
292212 text-decoration: none;
293213}
294214.page-eyebrow .dot {
295215 width: 6px; height: 6px; border-radius: 50%;
296216 background: var(--accent-hi);
297217 box-shadow: 0 0 10px var(--accent-hi);
298218}
299219.page-title {
300220 margin: 0 0 8px;
301221 font-size: 32px;
302222 font-weight: 800;
303223 letter-spacing: -0.02em;
304224 background: linear-gradient(135deg, #fff 0%, #cbd5e1 60%, var(--accent-hi) 100%);
305225 -webkit-background-clip: text;
306226 background-clip: text;
307227 color: transparent;
308228}
309229.page-subtitle {
310230 color: var(--text-dim);
311231 font-size: 14.5px;
312232 max-width: 780px;
313233 margin: 0;
314234}
315235
316236/* =========================================================================
317237 * MODULES / CARDS
318238 * ========================================================================= */
319239.dash-grid {
320240 display: grid;
321241 grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
322242 gap: 16px;
323243 margin-bottom: 20px;
324244}
325245.module {
326246 background: var(--bg-panel);
327247 border: 1px solid var(--border);
328248 border-radius: var(--radius);
329249 overflow: hidden;
330250 transition: border-color .15s ease, box-shadow .15s ease;
331251}
332252.module:hover { border-color: var(--border-hi); }
333253.module-head {
334254 padding: 12px 16px;
335255 border-bottom: 1px solid var(--border);
336256 display: flex;
337257 align-items: center;
338258 justify-content: space-between;
339259 gap: 12px;
340260 background: rgba(20, 184, 166, .03);
341261}
342262.module-head .left { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
343263.module-icon {
344264 width: 26px; height: 26px;
345265 border-radius: 7px;
346266 display: grid; place-items: center;
347267 color: var(--accent-hi);
348268 background: rgba(20, 184, 166, .10);
349269 border: 1px solid rgba(20, 184, 166, .30);
350270}
351271.module-title { font-size: 13px; font-weight: 700; letter-spacing: .3px; }
352272.module-subtitle {
353273 font-size: 11.5px;
354274 font-weight: 400;
355275 color: #b8c5d6;
356276 margin-left: 8px;
357277 padding-left: 10px;
358278 border-left: 1px solid var(--border);
359279 line-height: 1.35;
360280}
361281.module-body { padding: 16px; }
362282.module-body.tight { padding: 0; }
363283
364284/* Module glow variants */
365285.module.glow-teal { box-shadow: 0 0 0 1px rgba(20, 184, 166, .20), 0 0 26px rgba(20, 184, 166, .10); }
366286.module.glow-amber { box-shadow: 0 0 0 1px rgba(245, 158, 11, .20), 0 0 26px rgba(245, 158, 11, .10); }
367287.module.glow-rose { box-shadow: 0 0 0 1px rgba(244, 63, 94, .20), 0 0 26px rgba(244, 63, 94, .10); }
368288.module.glow-emerald{ box-shadow: 0 0 0 1px rgba(52, 211, 153, .20), 0 0 26px rgba(52, 211, 153, .10); }
369289.module.glow-sky { box-shadow: 0 0 0 1px rgba(56, 189, 248, .20), 0 0 26px rgba(56, 189, 248, .10); }
370290
371291/* =========================================================================
372292 * KPI TILES
373293 * ========================================================================= */
374294.kpi { padding: 20px 22px; }
375295.kpi .num {
376296 font-size: 34px;
377297 font-weight: 800;
378298 letter-spacing: -0.02em;
379299 line-height: 1.1;
380300 font-variant-numeric: tabular-nums;
381301}
382302.kpi .lbl {
383303 font-size: 11px;
384304 letter-spacing: 1.6px;
385305 text-transform: uppercase;
386306 color: var(--text-muted);
387307 font-weight: 700;
388308 margin-top: 6px;
389309}
390310.kpi .sub { font-size: 12px; color: var(--text-dim); margin-top: 10px; }
391311.kpi-teal .num { color: var(--accent-hi); text-shadow: 0 0 24px rgba(20, 184, 166, .35); }
392312.kpi-amber .num { color: var(--accent-warn-hi); text-shadow: 0 0 24px rgba(245, 158, 11, .30); }
393313.kpi-rose .num { color: var(--accent-danger-hi); text-shadow: 0 0 24px rgba(244, 63, 94, .30); }
394314.kpi-emerald .num { color: var(--accent-ok-hi); text-shadow: 0 0 24px rgba(52, 211, 153, .30); }
395315.kpi-sky .num { color: var(--accent-info); text-shadow: 0 0 24px rgba(56, 189, 248, .30); }
396316
397317/* =========================================================================
398318 * PILLS + STATUS BADGES
399319 * ========================================================================= */
400320.pill {
401321 display: inline-flex;
402322 align-items: center;
403323 padding: 3px 9px;
404324 border-radius: var(--radius-pill);
405325 font-size: 10.5px;
406326 letter-spacing: .6px;
407327 text-transform: uppercase;
408328 font-weight: 700;
409329 border: 1px solid var(--border);
410330}
411331.pill-ok { background: rgba(52, 211, 153, .10); color: #a7f3d0; border-color: rgba(52, 211, 153, .35); }
412332.pill-warn { background: rgba(245, 158, 11, .10); color: var(--accent-warn-hi); border-color: rgba(245, 158, 11, .35); }
413333.pill-bad { background: rgba(244, 63, 94, .10); color: var(--accent-danger-hi); border-color: rgba(244, 63, 94, .35); }
414334.pill-info { background: rgba(56, 189, 248, .10); color: var(--accent-info); border-color: rgba(56, 189, 248, .35); }
415335.pill-mute { background: rgba(255,255,255,.03); color: var(--text-dim); }
416336
417337/* =========================================================================
418338 * TABLES
419339 * ========================================================================= */
420340.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
421341.tbl th {
422342 text-align: left;
423343 padding: 10px 14px;
424344 font-size: 10.5px;
425345 letter-spacing: 1.4px;
426346 text-transform: uppercase;
427347 color: var(--text-muted);
428348 font-weight: 700;
429349 border-bottom: 1px solid var(--border);
430350 background: rgba(255,255,255,.02);
431351}
432352.tbl td {
433353 padding: 12px 14px;
434354 border-bottom: 1px solid rgba(255,255,255,.03);
435355 vertical-align: middle;
436356}
437357.tbl tr:hover td { background: rgba(255,255,255,.02); }
438358.tbl .mono { font-family: var(--mono); font-size: 12.5px; }
439359.tbl .dim { color: var(--text-dim); }
440360
441361/* =========================================================================
442362 * CHIP RANGE PICKER (portfolio-canonical .tr-chip pattern)
443363 * ========================================================================= */
444364.tr-chip {
445365 display: inline-flex;
446366 align-items: center;
447367 padding: 5px 12px;
448368 border-radius: var(--radius-pill);
449369 font-size: 12px;
450370 font-weight: 600;
451371 color: var(--text-muted);
452372 text-decoration: none;
453373 background: transparent;
454374 border: 1px solid var(--border);
455375 cursor: pointer;
456376 transition: all .15s ease;
457377 font-family: inherit;
458378}
459379.tr-chip:hover { color: var(--text); border-color: var(--accent); }
460380.tr-chip.is-active {
461381 background: var(--accent);
462382 color: #0a1220;
463383 border-color: var(--accent);
464384}
465385.range-bar {
466386 display: flex;
467387 flex-wrap: wrap;
468388 align-items: center;
469389 gap: 8px;
470390 padding: 10px 14px;
471391 background: var(--bg-2);
472392 border: 1px solid var(--border);
473393 border-radius: var(--radius);
474394 margin-bottom: 16px;
475395}
476396.range-bar .rb-label {
477397 font-size: 11px;
478398 letter-spacing: 1.4px;
479399 text-transform: uppercase;
480400 color: var(--text-muted);
481401 font-weight: 700;
482402}
483403.range-bar input[type="text"],
484404.range-bar input[type="datetime-local"] {
485405 background: var(--bg-1);
486406 color: var(--text);
487407 border: 1px solid var(--border);
488408 border-radius: var(--radius-sm);
489409 padding: 5px 10px;
490410 font-size: 12.5px;
491411 font-family: inherit;
492412}
493413.range-bar input[type="text"]:focus,
494414.range-bar input[type="datetime-local"]:focus {
495415 outline: none;
496416 border-color: var(--accent);
497417}
498418
499419/* =========================================================================
500420 * CHART TOOLTIP (activity timeline etc.)
501421 * ========================================================================= */
502422.chart-tooltip {
503423 position: fixed;
504424 z-index: 9999;
505425 pointer-events: none;
506426 background: var(--bg-3);
507427 border: 1px solid var(--accent);
508428 border-radius: var(--radius-sm);
509429 padding: 8px 12px;
510430 font-size: 12px;
511431 color: var(--text);
512432 box-shadow: 0 8px 24px rgba(0,0,0,0.5);
513433 min-width: 160px;
514434 transform: translate(-50%, calc(-100% - 10px));
515435 opacity: 0;
516436 transition: opacity .1s ease;
517437}
518438.chart-tooltip.on { opacity: 1; }
519439.chart-tooltip .ct-date {
520440 font-family: var(--mono);
521441 font-size: 11px;
522442 color: var(--text-muted);
523443 letter-spacing: 0.5px;
524444 margin-bottom: 4px;
525445}
526446.chart-tooltip .ct-row {
527447 display: flex;
528448 align-items: center;
529449 gap: 6px;
530450 line-height: 1.5;
531451}
532452.chart-tooltip .ct-swatch {
533453 width: 9px; height: 9px; border-radius: 2px; display: inline-block;
534454}
535455.chart-tooltip .ct-hint {
536456 margin-top: 4px;
537457 font-size: 10.5px;
538458 color: var(--text-muted);
539459 font-style: italic;
540460}
541461
542462/* =========================================================================
543463 * BUTTONS
544464 * ========================================================================= */
545465.btn {
546466 display: inline-flex;
547467 align-items: center;
548468 gap: 6px;
549469 padding: 8px 16px;
550470 background: var(--accent);
551471 color: #030710;
552472 border: none;
553473 border-radius: var(--radius-pill);
554474 font-family: inherit;
555475 font-size: 12.5px;
556476 font-weight: 700;
557477 cursor: pointer;
558478 text-decoration: none;
559479 transition: transform .1s ease, box-shadow .1s ease, background .12s ease;
560480}
561481.btn:hover { background: var(--accent-hi); box-shadow: 0 4px 14px var(--accent-glow); transform: translateY(-1px); }
562482.btn-secondary {
563483 background: transparent;
564484 color: var(--text);
565485 border: 1px solid var(--border);
566486}
567487.btn-secondary:hover { background: var(--bg-2); border-color: var(--accent); color: var(--accent-hi); }
568488.btn-danger { background: var(--accent-danger); }
569489.btn-danger:hover { background: var(--accent-danger-hi); box-shadow: 0 4px 14px rgba(244, 63, 94, .35); }
570490
571491/* =========================================================================
572492 * FORMS
573493 * ========================================================================= */
574494input[type=text], input[type=email], input[type=password], input[type=number],
575495input[type=date], input[type=datetime-local], textarea, select {
576496 background: var(--bg-2);
577497 color: var(--text);
578498 border: 1px solid var(--border);
579499 border-radius: var(--radius-sm);
580500 padding: 8px 12px;
581501 font-family: inherit;
582502 font-size: 13px;
583503 outline: none;
584504 transition: border-color .12s ease;
585505 color-scheme: dark;
586506}
587507input:focus, textarea:focus, select:focus { border-color: var(--accent); }
588508
589509/* =========================================================================
590510 * MISC UTILITIES
591511 * ========================================================================= */
592512code {
593513 background: rgba(20, 184, 166, .10);
594514 color: var(--accent-hi);
595515 padding: 1px 6px;
596516 border-radius: 4px;
597517 font-family: var(--mono);
598518 font-size: 0.88em;
599519 border: 1px solid rgba(20, 184, 166, .20);
600520}
601521.mono { font-family: var(--mono); }
602522.dim { color: var(--text-dim); }
603523.muted { color: var(--text-muted); }
604524
605525/* Banner */
606526.banner {
607527 padding: 10px 14px;
608528 border-radius: var(--radius-sm);
609529 font-size: 13px;
610530 margin: 10px 0;
611531 border-left: 3px solid;
612532}
613533.banner-ok { background: rgba(52, 211, 153, .08); border-left-color: var(--accent-ok); color: #a7f3d0; }
614534.banner-warn { background: rgba(245, 158, 11, .08); border-left-color: var(--accent-warn); color: var(--accent-warn-hi); }
615535.banner-err { background: rgba(244, 63, 94, .08); border-left-color: var(--accent-danger); color: var(--accent-danger-hi); }
616536.banner-info { background: rgba(56, 189, 248, .08); border-left-color: var(--accent-info); color: var(--accent-info); }
617537
618538/* Scrollbar (webkit) */
619539::-webkit-scrollbar { width: 10px; height: 10px; }
620540::-webkit-scrollbar-track { background: var(--bg-0); }
621541::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: 5px; border: 2px solid var(--bg-0); }
622542::-webkit-scrollbar-thumb:hover { background: var(--border-hi); }
Confirm restore
Backs current content to <target>.drift_restore_backup_<epoch>, writes the captured content, verifies SHA post-write.
Cancel Logged to RESTORE_LOG regardless of outcome.