:root{ --bg: #060402; --glass: rgba(18,10,3,.90); --border: rgba(255,165,0,.30); --text: #fdf0d8; --muted: #c49a5e; --accent: #ffaa00; --accent-2: #e05418; --glow: #ffaa00; --outer-pad: clamp(16px, 1.8vw, 80px); --gap: clamp(12px, 1.3vw, 56px); --radius: clamp(18px, 1.4vw, 60px); --radius-sm: clamp(12px, 0.9vw, 40px); --font: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Noto Sans", Arial, sans-serif; --time-size: clamp(60px, 8.5vh, 200px); --date-size: clamp(22px, 2.5vh, 58px); --h2-size: clamp(18px, 2vh, 46px); --cond-size: clamp(20px, 2.3vh, 54px); --info-size: clamp(16px, 2vh, 46px); --table-head: clamp(14px, 1.6vh, 38px); --table-cell: clamp(14px, 1.9vh, 44px); } *{box-sizing:border-box} html,body{height:100%;width:100%;margin:0;padding:0} body{ font-family:var(--font); color:var(--text); background: radial-gradient(1200px 600px at 20% 10%, rgba(255,140,0,.15), transparent 60%), radial-gradient(900px 500px at 85% 20%, rgba(200,55,10,.12), transparent 55%), radial-gradient(800px 600px at 50% 100%, rgba(110,20,55,.09), transparent 55%), var(--bg); overflow:hidden; -webkit-font-smoothing:antialiased; text-rendering:geometricPrecision; } .grid{ height:100vh; width:100vw; padding:var(--outer-pad); display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.35fr); grid-template-rows:minmax(0,1fr) minmax(0,1fr); gap:var(--gap); filter:brightness(.98); } .grid>*{min-width:0;min-height:0} .topLeft,.topRight,.bottomLeft,.bottomRight{ position:relative; min-width:0; min-height:0; border-radius:var(--radius); background:var(--glass); border:1px solid var(--border); 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); overflow:hidden; backdrop-filter:blur(16px); } /* -------- Top Left -------- */ .topLeft{ display:flex; flex-direction:column; padding:clamp(12px, 1.2vw, 54px); gap:clamp(10px, 1vh, 46px); } .dateTime{ flex:0 0 auto; min-width:0; display: grid; grid-template-columns: 1fr 38%; gap: clamp(8px, 0.9vh, 20px) clamp(24px, 2.8vw, 110px); padding:clamp(14px, 1.6vh, 38px) clamp(18px, 2vw, 80px); border-radius:var(--radius-sm); background:rgba(10,6,1,.88); border:1px solid rgba(255,165,0,.38); position: relative; align-items: start; min-height: auto; } #date{ grid-column: 1; margin:0; font-size:var(--date-size); letter-spacing:.35px; color:var(--muted); text-transform:uppercase; } #time{ grid-column: 1; margin:2px 0 0 0; font-size:var(--time-size); font-weight:760; letter-spacing:.8px; line-height:1.02; color:var(--text); text-shadow:0 0 28px var(--glow); } /* weather description + logo in right column */ .dateTime > div { grid-column: 2; grid-row: 1 / span 2; display:flex; flex-direction:column; align-items: flex-end; justify-content: center; gap: clamp(6px, 0.8vh, 18px); height: 100%; min-width:0; } #weatherDescription{ font-size:clamp(36px, 3.5vh, 82px); font-weight:700; color:var(--text); text-shadow:0 0 18px var(--accent); margin:0; text-align:right; line-height:1.05; white-space:nowrap; } #currentWeatherLogo{ font-size:clamp(70px, 7vh, 165px); line-height:1; filter:drop-shadow(0 0 22px var(--accent-2)); margin:0; } #conditionLogo{ height: 100%; position: absolute; top: 0; right: 0; filter:drop-shadow(0 0 25px var(--glow)); z-index: 1; pointer-events: none; } /* -------- weather block below -------- */ .weather{ flex:1 1 auto; min-width:0; min-height:0; display:flex; } .weatherBlock{ flex:1 1 auto; min-width:0; min-height:0; padding:clamp(10px, 1vw, 44px); } .weatherInfo{ height: 100%; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-rows:minmax(0,1fr) minmax(0,1fr); gap:clamp(6px, 0.7vh, 16px) clamp(8px, 0.8vw, 34px); align-content:stretch; align-items:stretch; } .weatherItem{ margin:0; padding:clamp(6px, 1.1vh, 26px) clamp(9px, 1.3vw, 52px); border-radius:clamp(14px, 0.9vw, 36px); background:rgba(255,160,0,.07); border:1px solid rgba(255,165,0,.22); font-size:var(--info-size); line-height:1.00; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 20px rgba(0,0,0,.45); } #temp,#feels,#wind,#dewPoint{ color:var(--text); font-weight:700; } #wind svg{ width:clamp(24px, 2.2vh, 52px); height:clamp(24px, 2.2vh, 52px); } /* -------- Top Right (Radar) -------- */ .topRight{ padding:clamp(12px, 1.2vw, 54px); display:flex; align-items:center; justify-content:center; background:radial-gradient(800px 520px at 70% 10%, rgba(200,60,0,.10), transparent 55%), rgba(10,6,1,.88); } #radar{ width:100%; height:100%; object-fit:contain; object-position:center center; border-radius:calc(var(--radius) - 6px); border:1px solid rgba(255,165,0,.40); box-shadow:0 14px 40px rgba(0,0,0,.70), 0 0 28px rgba(255,140,0,.18); background:#00000038; display:block; } /* -------- Bottom Left (Forecast) -------- */ .bottomLeft{padding:clamp(12px, 1.2vw, 54px);display:flex;min-width:0;min-height:0} table{ width:100%; height:100%; border-collapse:separate; border-spacing:0; overflow:hidden; border-radius:calc(var(--radius) - 6px); background:rgba(10,6,1,.78); border:1px solid rgba(255,165,0,.28); table-layout:fixed; } thead th{ padding:clamp(8px, 1.1vh, 26px) clamp(8px, 1.1vw, 44px); font-size:var(--table-head); line-height:1.1; color:var(--text); letter-spacing:.4px; text-transform:uppercase; background:linear-gradient(90deg, rgba(255,150,0,.28), rgba(200,60,0,.22)); border-bottom:1px solid rgba(255,150,0,.35); } tbody td{ padding:clamp(6px, 1vh, 22px) clamp(8px, 1vw, 40px); font-size:var(--table-cell); line-height:1.1; color:var(--muted); border-bottom:1px solid rgba(255,255,255,.05); } tbody td:first-child{ width:44%; color:var(--text); font-weight:760; background:rgba(255,150,0,.09); border-right:1px solid rgba(255,165,0,.22); } tbody td:not(:first-child),thead th:not(:first-child){text-align:center} tbody tr:nth-child(odd) td{background:rgba(255,255,255,.03)} tbody tr:nth-child(2n) td{background:rgba(255,160,0,.05)} tbody tr:last-child td{border-bottom:none} /* -------- Bottom Right -------- */ .bottomRight{ padding:clamp(12px, 1.2vw, 54px); background:radial-gradient(900px 600px at 20% 20%, rgba(255,130,0,.09), transparent 55%), rgba(10,6,1,.88); } .bottomRight iframe{ width:100%; height:100%; border:1px solid rgba(255,165,0,.35); border-radius:calc(var(--radius) - 6px); box-shadow:0 18px 50px rgba(0,0,0,.80), 0 0 30px rgba(200,60,0,.22); background:#000; display:block; } :focus{outline:3px solid var(--accent);outline-offset:3px;border-radius:12px}