index.css 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. :root{
  2. --bg: #060402;
  3. --glass: rgba(18,10,3,.90);
  4. --border: rgba(255,165,0,.30);
  5. --text: #fdf0d8;
  6. --muted: #c49a5e;
  7. --accent: #ffaa00;
  8. --accent-2: #e05418;
  9. --glow: #ffaa00;
  10. --outer-pad: clamp(16px, 1.8vw, 80px);
  11. --gap: clamp(12px, 1.3vw, 56px);
  12. --radius: clamp(18px, 1.4vw, 60px);
  13. --radius-sm: clamp(12px, 0.9vw, 40px);
  14. --font: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Noto Sans", Arial, sans-serif;
  15. --time-size: clamp(60px, 8.5vh, 200px);
  16. --date-size: clamp(22px, 2.5vh, 58px);
  17. --h2-size: clamp(18px, 2vh, 46px);
  18. --cond-size: clamp(20px, 2.3vh, 54px);
  19. --info-size: clamp(16px, 2vh, 46px);
  20. --table-head: clamp(14px, 1.6vh, 38px);
  21. --table-cell: clamp(14px, 1.9vh, 44px);
  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(255,140,0,.15), transparent 60%),
  30. radial-gradient(900px 500px at 85% 20%, rgba(200,55,10,.12), transparent 55%),
  31. radial-gradient(800px 600px at 50% 100%, rgba(110,20,55,.09), 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 rgba(0,0,0,.65), inset 0 1px rgba(255,190,60,.07), 0 0 0 1px rgba(255,120,0,.10);
  56. overflow:hidden;
  57. backdrop-filter:blur(16px);
  58. }
  59. /* -------- Top Left -------- */
  60. .topLeft{
  61. display:flex;
  62. flex-direction:column;
  63. padding:clamp(12px, 1.2vw, 54px);
  64. gap:clamp(10px, 1vh, 46px);
  65. }
  66. .dateTime{
  67. flex:0 0 auto;
  68. min-width:0;
  69. display: grid;
  70. grid-template-columns: 1fr 38%;
  71. gap: clamp(8px, 0.9vh, 20px) clamp(24px, 2.8vw, 110px);
  72. padding:clamp(14px, 1.6vh, 38px) clamp(18px, 2vw, 80px);
  73. border-radius:var(--radius-sm);
  74. background:rgba(10,6,1,.88);
  75. border:1px solid rgba(255,165,0,.38);
  76. position: relative;
  77. align-items: start;
  78. min-height: auto;
  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 28px var(--glow);
  97. }
  98. /* weather description + logo in right column */
  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: clamp(6px, 0.8vh, 18px);
  107. height: 100%;
  108. min-width:0;
  109. }
  110. #weatherDescription{
  111. font-size:clamp(36px, 3.5vh, 82px);
  112. font-weight:700;
  113. color:var(--text);
  114. text-shadow:0 0 18px 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(70px, 7vh, 165px);
  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 -------- */
  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:clamp(10px, 1vw, 44px);
  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:clamp(6px, 0.7vh, 16px) clamp(8px, 0.8vw, 34px);
  154. align-content:stretch;
  155. align-items:stretch;
  156. }
  157. .weatherItem{
  158. margin:0;
  159. padding:clamp(6px, 1.1vh, 26px) clamp(9px, 1.3vw, 52px);
  160. border-radius:clamp(14px, 0.9vw, 36px);
  161. background:rgba(255,160,0,.07);
  162. border:1px solid rgba(255,165,0,.22);
  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 20px rgba(0,0,0,.45);
  169. }
  170. #temp,#feels,#wind,#dewPoint{
  171. color:var(--text);
  172. font-weight:700;
  173. }
  174. #wind svg{
  175. width:clamp(24px, 2.2vh, 52px);
  176. height:clamp(24px, 2.2vh, 52px);
  177. }
  178. /* -------- Top Right (Radar) -------- */
  179. .topRight{
  180. padding:clamp(12px, 1.2vw, 54px);
  181. display:flex;
  182. align-items:center;
  183. justify-content:center;
  184. background:radial-gradient(800px 520px at 70% 10%, rgba(200,60,0,.10), transparent 55%), rgba(10,6,1,.88);
  185. }
  186. #radar{
  187. width:100%;
  188. height:100%;
  189. object-fit:contain;
  190. object-position:center center;
  191. border-radius:calc(var(--radius) - 6px);
  192. border:1px solid rgba(255,165,0,.40);
  193. box-shadow:0 14px 40px rgba(0,0,0,.70), 0 0 28px rgba(255,140,0,.18);
  194. background:#00000038;
  195. display:block;
  196. }
  197. /* -------- Bottom Left (Forecast) -------- */
  198. .bottomLeft{padding:clamp(12px, 1.2vw, 54px);display:flex;min-width:0;min-height:0}
  199. table{
  200. width:100%;
  201. height:100%;
  202. border-collapse:separate;
  203. border-spacing:0;
  204. overflow:hidden;
  205. border-radius:calc(var(--radius) - 6px);
  206. background:rgba(10,6,1,.78);
  207. border:1px solid rgba(255,165,0,.28);
  208. table-layout:fixed;
  209. }
  210. thead th{
  211. padding:clamp(8px, 1.1vh, 26px) clamp(8px, 1.1vw, 44px);
  212. font-size:var(--table-head);
  213. line-height:1.1;
  214. color:var(--text);
  215. letter-spacing:.4px;
  216. text-transform:uppercase;
  217. background:linear-gradient(90deg, rgba(255,150,0,.28), rgba(200,60,0,.22));
  218. border-bottom:1px solid rgba(255,150,0,.35);
  219. }
  220. tbody td{
  221. padding:clamp(6px, 1vh, 22px) clamp(8px, 1vw, 40px);
  222. font-size:var(--table-cell);
  223. line-height:1.1;
  224. color:var(--muted);
  225. border-bottom:1px solid rgba(255,255,255,.05);
  226. }
  227. tbody td:first-child{
  228. width:44%;
  229. color:var(--text);
  230. font-weight:760;
  231. background:rgba(255,150,0,.09);
  232. border-right:1px solid rgba(255,165,0,.22);
  233. }
  234. tbody td:not(:first-child),thead th:not(:first-child){text-align:center}
  235. tbody tr:nth-child(odd) td{background:rgba(255,255,255,.03)}
  236. tbody tr:nth-child(2n) td{background:rgba(255,160,0,.05)}
  237. tbody tr:last-child td{border-bottom:none}
  238. /* -------- Bottom Right -------- */
  239. .bottomRight{
  240. padding:clamp(12px, 1.2vw, 54px);
  241. background:radial-gradient(900px 600px at 20% 20%, rgba(255,130,0,.09), transparent 55%), rgba(10,6,1,.88);
  242. }
  243. .bottomRight iframe{
  244. width:100%;
  245. height:100%;
  246. border:1px solid rgba(255,165,0,.35);
  247. border-radius:calc(var(--radius) - 6px);
  248. box-shadow:0 18px 50px rgba(0,0,0,.80), 0 0 30px rgba(200,60,0,.22);
  249. background:#000;
  250. display:block;
  251. }
  252. :focus{outline:3px solid var(--accent);outline-offset:3px;border-radius:12px}