index_old.css 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. :root{
  2. --bg: #0b0f16;
  3. --border: rgba(255,255,255,.1);
  4. --text: rgba(255,255,255,.92);
  5. --muted: rgba(255,255,255,.68);
  6. --accent: #4cc9f0;
  7. --accent-2: #a78bfa;
  8. --outer-pad: 16px;
  9. --gap: 14px;
  10. --radius: 18px;
  11. --radius-sm: 12px;
  12. --font: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Noto Sans", Arial, sans-serif;
  13. --time-size: clamp(40px, 2.55vh, 62px);
  14. --date-size: clamp(16px, 1.25vh, 22px);
  15. --h2-size: clamp(15px, 1.05vh, 19px);
  16. --cond-size: clamp(16px, 1.25vh, 21px);
  17. --info-size: clamp(12px, 1vh, 17px);
  18. --table-head: clamp(12px, 1vh, 15px);
  19. --table-cell: clamp(12px, 1.05vh, 16px);
  20. }
  21. *{box-sizing:border-box}
  22. html,body{height:100%;width:100%}
  23. body{
  24. margin:0;
  25. font-family:var(--font);
  26. color:var(--text);
  27. background:
  28. radial-gradient(1200px 600px at 20% 10%,rgba(76,201,240,.12),transparent 60%),
  29. radial-gradient(900px 500px at 85% 20%,rgba(167,139,250,.1),transparent 55%),
  30. radial-gradient(800px 600px at 50% 100%,rgba(255,255,255,.06),transparent 55%),
  31. var(--bg);
  32. overflow:hidden;
  33. -webkit-font-smoothing:antialiased;
  34. text-rendering:geometricPrecision
  35. }
  36. .grid{
  37. height:100vh;
  38. width:100vw;
  39. padding:var(--outer-pad);
  40. display:grid;
  41. grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);
  42. grid-template-rows:minmax(0,1fr) minmax(0,1fr);
  43. gap:var(--gap);
  44. filter:brightness(.98)
  45. }
  46. .grid>*{min-width:0;min-height:0}
  47. .topLeft,.topRight,.bottomLeft,.bottomRight{
  48. position:relative;
  49. min-width:0;
  50. min-height:0;
  51. border-radius:var(--radius);
  52. background:linear-gradient(180deg,#ffffff0f,#ffffff08);
  53. border:1px solid var(--border);
  54. box-shadow:0 10px 30px #00000059,inset 0 1px #ffffff0f;
  55. overflow:hidden
  56. }
  57. /* -------- Top Left -------- */
  58. .topLeft{
  59. display:flex;
  60. flex-direction:column;
  61. min-width:0;
  62. min-height:0;
  63. padding:12px;
  64. gap:10px
  65. }
  66. .dateTime{
  67. flex:0 0 auto;
  68. min-width:0;
  69. display:flex;
  70. flex-direction:column;
  71. gap:4px;
  72. padding:10px 12px;
  73. border-radius:var(--radius-sm);
  74. background:#00000038;
  75. border:1px solid rgba(255,255,255,.08);
  76. position: relative;
  77. }
  78. #date{
  79. margin:0;
  80. font-size:var(--date-size);
  81. letter-spacing:.35px;
  82. color:var(--muted)
  83. }
  84. #time{
  85. margin:0;
  86. font-size:var(--time-size);
  87. font-weight:760;
  88. letter-spacing:.8px;
  89. line-height:1.02;
  90. color:var(--text);
  91. overflow:hidden;
  92. text-overflow:ellipsis;
  93. white-space:nowrap
  94. }
  95. .weather{
  96. flex:1 1 auto;
  97. min-width:0;
  98. min-height:0;
  99. display:flex
  100. }
  101. .weatherBlock{
  102. flex:1 1 auto;
  103. min-width:0;
  104. min-height:0;
  105. padding:10px;
  106. grid-template-rows:auto auto minmax(0,1fr);
  107. gap:8px;
  108. }
  109. .weatherBlock h2:before{
  110. content:"";
  111. width:10px;
  112. height:10px;
  113. border-radius:50%;
  114. background:linear-gradient(135deg,var(--accent),var(--accent-2));
  115. box-shadow:0 0 18px #4cc9f059
  116. }
  117. #conditionLogo{
  118. height: 100%;
  119. position: absolute;
  120. top: 0;
  121. right: 0;
  122. }
  123. /* FIX 1: make weatherInfo a strict 2x2 grid so the last two rows can't get clipped */
  124. .weatherInfo{
  125. height: 100%;
  126. display:grid;
  127. grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  128. grid-template-rows:minmax(0,1fr) minmax(0,1fr);
  129. gap:6px 8px;
  130. align-content:stretch;
  131. align-items:stretch;
  132. }
  133. .weatherItem{
  134. margin:0;
  135. padding:6px 9px; /* slightly tighter */
  136. border-radius:14px;
  137. background:#ffffff09;
  138. border:1px solid rgba(255,255,255,.06);
  139. font-size:var(--info-size);
  140. line-height:1.00; /* tighter to stop bottom clipping */
  141. color:var(--muted);
  142. display:flex;
  143. align-items:center;
  144. justify-content:center;
  145. min-width:0;
  146. min-height:0;
  147. overflow:hidden;
  148. text-overflow:ellipsis;
  149. white-space:nowrap
  150. }
  151. #temp,#feels,#wind,#humidity{color:var(--text);font-weight:650}
  152. /* -------- Top Right (Radar) -------- */
  153. .topRight{
  154. padding:12px;
  155. display:flex;
  156. align-items:center;
  157. justify-content:center;
  158. background:radial-gradient(800px 520px at 70% 10%,rgba(167,139,250,.09),transparent 55%),#0000001a
  159. }
  160. /* FIX 2: slight zoom, clip a bit top/bottom */
  161. #radar{
  162. width:100%;
  163. height:100%;
  164. object-fit:scale-down; /* crop instead of letterbox */
  165. object-position:center 55%; /* trims a touch more top/bottom */
  166. transform:scale(1.5); /* very slight zoom */
  167. transform-origin:center;
  168. border-radius:calc(var(--radius) - 6px);
  169. border:1px solid rgba(255,255,255,.08);
  170. box-shadow:0 14px 40px #00000073;
  171. background:#00000038;
  172. display:block
  173. }
  174. .topRight:after{
  175. content:"Radar";
  176. position:absolute;
  177. top:12px;
  178. left:14px;
  179. padding:6px 10px;
  180. font-size:14px;
  181. letter-spacing:.6px;
  182. text-transform:uppercase;
  183. color:#ffffffb8;
  184. background:#0006;
  185. border:1px solid rgba(255,255,255,.08);
  186. border-radius:999px
  187. }
  188. /* -------- Bottom Left (Forecast) -------- */
  189. .bottomLeft{padding:12px;display:flex;min-width:0;min-height:0}
  190. table{
  191. width:100%;
  192. height:100%;
  193. border-collapse:separate;
  194. border-spacing:0;
  195. overflow:hidden;
  196. border-radius:calc(var(--radius) - 6px);
  197. background:#0000002e;
  198. border:1px solid rgba(255,255,255,.08);
  199. table-layout:fixed
  200. }
  201. thead th{
  202. padding:8px;
  203. font-size:var(--table-head);
  204. line-height:1.1;
  205. color:#ffffffd1;
  206. letter-spacing:.4px;
  207. text-transform:uppercase;
  208. background:linear-gradient(90deg,#4cc9f01a,#a78bfa14);
  209. border-bottom:1px solid rgba(255,255,255,.1);
  210. overflow:hidden;
  211. text-overflow:ellipsis;
  212. white-space:nowrap
  213. }
  214. tbody td{
  215. padding:6px 8px;
  216. font-size:var(--table-cell);
  217. line-height:1.1;
  218. color:var(--muted);
  219. border-bottom:1px solid rgba(255,255,255,.06);
  220. overflow:hidden;
  221. text-overflow:ellipsis;
  222. white-space:nowrap
  223. }
  224. tbody td:first-child{
  225. width:44%;
  226. color:#ffffffe0;
  227. font-weight:760;
  228. letter-spacing:.15px;
  229. background:#ffffff08;
  230. border-right:1px solid rgba(255,255,255,.06)
  231. }
  232. tbody td:not(:first-child),thead th:not(:first-child){text-align:center}
  233. tbody tr:nth-child(odd) td{background:#ffffff05}
  234. tbody tr:nth-child(2n) td{background:#ffffff07}
  235. tbody tr:nth-child(odd) td:first-child{background:#ffffff0a}
  236. tbody tr:nth-child(2n) td:first-child{background:#ffffff0e}
  237. tbody tr:last-child td{border-bottom:none}
  238. /* -------- Bottom Right -------- */
  239. .bottomRight{
  240. padding:12px;
  241. background:radial-gradient(900px 600px at 20% 20%,rgba(76,201,240,.08),transparent 55%),#0000001a;
  242. min-width:0;
  243. min-height:0
  244. }
  245. .bottomRight iframe{
  246. width:100%;
  247. height:100%;
  248. border:1px solid rgba(255,255,255,.1);
  249. border-radius:calc(var(--radius) - 6px);
  250. box-shadow:0 18px 50px #0000008c;
  251. background:#000;
  252. display:block
  253. }
  254. :focus{outline:2px solid rgba(76,201,240,.55);outline-offset:2px}