summaryrefslogtreecommitdiffhomepage
path: root/assets/ext-window-field/field.rcss
blob: e237ae6233a074b8527d12ba382b6b715de3ff14 (plain)
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
/* The WINDOW FIELD layout (GLOSSARY: "window field") — FLOATING windows. The C++
   glue feeds each row's box as bound state (x,y,w,h,z) + the focused flag; this
   stylesheet turns that into the on-screen frame, chrome, and highlight. There is
   NO automatic layout here (that was the earlier focused-dominates tiling): every
   window is absolutely positioned, moved by a data-style translate and sized by
   data-style width/height. Tiled / sidebar containers are a LATER wave (windows
   will migrate between containers with captured-state animations). */

/* The field fills its whole surface (sized to the output by the glue) and is
   transparent so the scene below shows through every unpainted pixel (per-pixel
   alpha). Absolutely-positioned .win children stack within it. */
body.field {
    width: 100%;
    height: 100%;
    background-color: transparent;
    font-family: Noto Sans;
}

/* A floating window frame. Absolutely positioned; data-style left/top place it,
   width/height size it, z-index stacks it (all driven by the bound box state).
   Column flex so the titlebar sits above the live body with no calc(). Rounded +
   overflow:hidden clips the body texture to the card; a 1dp border becomes the
   bright focus ring via .focused. */
div.win {
    position: absolute;
    left: 0;
    top: 0;
    display: flex;
    flex-direction: column;
    background-color: #1c1c20ff;
    border-width: 1dp;
    border-color: #00000088;
    border-radius: 8dp;
    overflow: hidden;
}

/* The FOCUSED window gets a bright highlight ring (z-order is driven by the bound
   `z`, so no transform/raise needed here). A short transition tweens the ring. */
div.win.focused {
    border-color: #4da3ffff;
}

/* Titlebar: the move handle (drag: drag set inline in the RML). Fixed height,
   full width, holds the centered title. */
div.win .titlebar {
    height: 30dp;
    width: 100%;
    background-color: #26262cff;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
}
div.win.focused .titlebar {
    background-color: #2e3340ff;
}
div.win .title {
    color: #c7c9d1ff;
    font-size: 13dp;
    /* leave room so a long title does not slide under the close button */
    padding: 0 36dp 0 36dp;
}

/* Close button: a sibling laid over the titlebar's right edge (NOT inside the
   draggable titlebar, so a tap closes rather than starting a move). The "×" glyph
   renders in Noto Sans (loaded by the substrate). */
div.win .closebtn {
    position: absolute;
    top: 0;
    right: 0;
    width: 30dp;
    height: 30dp;
    color: #c7c9d1ff;
    font-size: 18dp;
    text-align: center;
    background-color: transparent;
}
div.win .closebtn:hover {
    background-color: #e0414aff;
    color: #ffffffff;
}

/* The live window texture fills the body below the titlebar (flex:1). RmlUi
   scales the texture to this box; once the client is configured to the box size
   (resize_mode, default "settle") it maps 1:1. */
img.live {
    display: block;
    flex: 1 1 0;
    width: 100%;
    min-height: 0;
}

/* The two BOTTOM resize grips, overlaid at the bottom corners (drag: drag set in
   the RML). Small, subtle, slightly brighter on hover; touch can grab the 22dp
   square. The top corners have no grip (the titlebar owns the top edge). */
div.win .grip {
    position: absolute;
    bottom: 0;
    width: 22dp;
    height: 22dp;
    background-color: #ffffff14;
}
div.win .grip:hover {
    background-color: #ffffff3c;
}
div.win .grip-bl {
    left: 0;
    border-top-right-radius: 8dp;
}
div.win .grip-br {
    right: 0;
    border-top-left-radius: 8dp;
}