index.css 6.4 KB

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