:root{--bg:#070b0e;--panel:#101820;--panel2:#151e26;--line:#ffffff14;--muted:#98a4af;--text:#f5f7fa;--lime:#b5fb47;--lime2:#dbff9c;--blue:#60cbfc;--orange:#ffc077;--shadow:0 12px 32px #0005;--radius:19px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:2px}button{color:inherit}svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.shell{max-width:1600px;min-height:100vh;margin:auto;padding:12px 18px 20px}.topnav{height:54px;display:flex;justify-content:space-between;align-items:center;gap:12px}.identity{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:800;letter-spacing:-.5px;white-space:nowrap}.identity .brand{width:31px;height:31px;background:var(--lime);color:#142012;display:grid;place-items:center;border-radius:10px;font-size:18px}.tabs{display:flex;align-items:center;gap:5px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{border:0;background:none;display:flex;align-items:center;gap:8px;padding:11px 13px;border-radius:13px;color:#a8b3b9;white-space:nowrap;font-size:12px;font-weight:650;transition:.2s}.tab svg{width:17px;height:17px}.tab:hover{background:#ffffff10}.tab.active{background:var(--lime);color:#10180c}.navright{display:flex;align-items:center;gap:9px;font-size:13px;color:#bec8ce;white-space:nowrap}.navright .clock{font-weight:800;font-size:16px;color:#fff;font-variant-numeric:tabular-nums}.state-dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 11px #b5fb4780}.scenery{height:126px;border:1px solid #ffffff16;border-radius:21px;margin:2px 0 12px;position:relative;overflow:hidden;background:#1b2630 url('scenery.svg') center 50%/cover no-repeat}.scenery:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#070b0ecc 0%,#070b0e65 43%,#070b0e08 82%),linear-gradient(0deg,#070b0e55,transparent 70%)}.hero-text{position:absolute;z-index:1;top:21px;left:27px}.hero-text h1{font-size:29px;letter-spacing:-1px;margin:0 0 5px}.hero-text p{font-size:12px;color:#d4d7da;margin:0}.hero-side{position:absolute;right:24px;bottom:18px;z-index:1;text-align:right;color:#f6f9fb;font-size:12px;font-weight:650}.hero-side span{display:block;color:#c0d0d2;font-size:10px;margin-top:4px}.dashboard{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:11px}.tile{min-width:0;background:linear-gradient(145deg,#17212af5,#111920);border:1px solid #ffffff12;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;padding:16px}.tile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}.tile-name{font-size:14px;font-weight:800;letter-spacing:-.2px;display:flex;align-items:center;gap:8px}.tile-name svg{width:19px;height:19px;color:var(--lime)}.tile-link{border:0;background:none;color:#a6b0b9;font-size:11px;font-weight:700;padding:3px 0;white-space:nowrap}.tile-link:hover{color:var(--lime)}.main-weather{grid-column:span 3;min-height:222px;background:radial-gradient(circle at 89% 15%,#36678266,transparent 57%),linear-gradient(135deg,#192a3b,#10202e 70%,#101920)}.main-calendar{grid-column:span 4;min-height:222px}.main-bus{grid-column:span 3;min-height:222px}.main-house{grid-column:span 2;min-height:222px}.weather-central{display:flex;align-items:center;gap:12px;margin:8px 0 14px}.weather-glyph{font-size:52px;line-height:1;filter:drop-shadow(0 5px 13px #4a9aca40)}.temperature{font-size:48px;font-weight:850;letter-spacing:-2.5px;line-height:1}.small-muted{font-size:11px;color:var(--muted)}.forecast-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}.forecast-part{display:flex;align-items:center;gap:6px;font-size:12px}.forecast-part em{font-style:normal;font-size:23px}.forecast-part strong{display:block;font-weight:700}.forecast-part .small-muted{font-size:10px}.weather-foot{display:flex;gap:9px;flex-wrap:wrap;font-size:10px;color:#d5e6ee;margin-top:10px}.event{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid #ffffff10}.event:last-child{border:0}.event-dot{height:7px;width:7px;border-radius:50%;margin-top:5px;flex-shrink:0;background:var(--blue)}.event-time{font-size:11px;color:#c5d4da;width:43px;flex-shrink:0;font-variant-numeric:tabular-nums}.event-main{min-width:0;flex:1;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-note{display:block;color:var(--muted);font-size:10px;font-weight:500;margin-top:4px}.event-pill{border-radius:6px;padding:4px 5px;background:#ffffff0a;color:#acbbc2;font-size:9px;font-weight:700}.busline{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #ffffff12}.busline:last-child{border:0}.route{background:#a3abb1;color:#10151a;font-size:11px;font-weight:850;padding:5px 7px;border-radius:6px;min-width:32px;text-align:center}.busline .dest{flex:1;min-width:0;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.busline .dest small{display:block;margin-top:4px;color:var(--muted);font-size:10px;font-weight:500}.eta{color:var(--lime);font-weight:850;font-size:13px;white-space:nowrap}.house-big{font-size:36px;font-weight:850;letter-spacing:-2px;margin-top:10px}.house-meter{height:5px;background:#43504d;border-radius:99px;overflow:hidden;margin:17px 0 12px}.house-meter i{display:block;height:100%;width:69%;background:var(--lime);border-radius:99px}.house-controls{display:flex;gap:7px;justify-content:space-between;align-items:center}.icon-button{width:30px;height:30px;border:1px solid #ffffff20;border-radius:50%;background:#ffffff13;display:grid;place-items:center}.icon-button svg{width:15px;height:15px}.icon-button:hover{border-color:var(--lime);color:var(--lime)}.house-status{font-size:10px;color:#a9b8bd;margin-top:8px}.bottom-meal{grid-column:span 3}.bottom-sport{grid-column:span 2}.bottom-football{grid-column:span 2}.bottom-task{grid-column:span 2}.bottom-birthday{grid-column:span 3}.bottom-tile{height:177px;position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:15px}.bottom-tile h3{font-size:14px;letter-spacing:-.2px;margin:0;display:flex;align-items:center;gap:7px}.bottom-tile h3 svg{color:var(--lime);width:17px;height:17px}.bottom-tile .value{font-size:15px;font-weight:800;max-width:100%;line-height:1.35}.bottom-tile .detail{font-size:10px;color:#afbbc3;margin-top:6px}.bottom-tile .arrow{position:absolute;bottom:14px;right:14px;color:#a5b5bd}.bottom-tile .arrow svg{width:16px;height:16px}.tile-button{cursor:pointer}.tile-button:hover{border-color:#b5fb4760;transform:translateY(-1px)}.bottom-meal{background:radial-gradient(circle at 105% 110%,#965c2970,transparent 60%),linear-gradient(145deg,#282119,#16191e)}.bottom-sport{background:radial-gradient(circle at 94% 87%,#3b698b70,transparent 60%),#151c25}.bottom-football{background:radial-gradient(circle at 100% 110%,#1f774d80,transparent 62%),#131d23}.bottom-task{background:linear-gradient(135deg,#182421,#111920)}.bottom-birthday{background:radial-gradient(circle at 94% 12%,#74476d75,transparent 64%),#171b28}.emoji-large{position:absolute;right:11px;bottom:9px;font-size:47px;opacity:.28;filter:saturate(1.25);pointer-events:none}.dashboard-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 4px;color:#82919b;font-size:10px}.demo-pill{background:#deac6622;color:#fbd098;border:1px solid #ffc17340;border-radius:99px;padding:5px 9px;font-weight:750}.dashboard-foot strong{color:#c0cad0}.page-title{font-size:24px;margin:5px 0 14px;letter-spacing:-.7px}.page-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:12px}.page-panel{background:#111923;border:1px solid var(--line);border-radius:20px;padding:19px;min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.panel-head h2{margin:0;font-size:16px}.action{border:1px solid #ffffff1c;background:#ffffff0d;border-radius:10px;padding:9px 12px;font-size:12px;font-weight:750}.action:hover{background:#ffffff1b}.action.accent{background:var(--lime);color:#1c2613;border:0}.form-inline{display:flex;gap:8px}.form-inline input{flex:1;min-width:0}.field{background:#1b2631;color:var(--text);padding:11px 12px;border:1px solid #ffffff1d;border-radius:11px;font-size:13px}.field::placeholder{color:#8998a3}.listrow{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #ffffff10;font-size:13px}.listrow:last-child{border:0}.listrow input[type=checkbox]{accent-color:var(--lime);width:17px;height:17px;flex-shrink:0}.listrow.done .list-main{text-decoration:line-through;opacity:.48}.list-main{flex:1}.listnote{font-size:10px;color:var(--muted);display:block;margin-top:4px}.empty{padding:20px;color:var(--muted);font-size:13px}.pill{padding:6px 8px;border-radius:8px;background:#ffffff10;font-size:10px;color:#d4dde2}.btn-delete{border:0;background:none;color:#a6b3bd;padding:6px}.btn-delete:hover{color:#ff9a9a}.weekrow{display:grid;grid-template-columns:70px 1fr auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #ffffff10;font-size:13px}.weekrow:last-child{border:0}.weekrow .weekday{color:var(--muted);font-weight:750}.birthdayrow{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #ffffff12;font-size:13px}.birthdayrow:last-child{border:0}.birth-day{color:var(--lime);font-size:11px;font-weight:800}.month-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.month-header strong{font-size:18px}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.month-dow{font-size:11px;color:var(--muted);text-align:center;padding:7px}.monthcell{min-height:91px;border:1px solid #ffffff15;border-radius:10px;padding:8px;min-width:0;font-size:11px;background:#ffffff05}.monthcell.today{border-color:#b5fb4799;background:#b5fb4711}.month-event{background:#517c7f4a;border-radius:5px;padding:4px 5px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.roomgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.roomtile{background:#ffffff08;border-radius:13px;padding:13px}.roomtile .degree{font-size:28px;font-weight:850;letter-spacing:-1px;margin:8px 0}.room-controls{display:flex;align-items:center;gap:9px;justify-content:space-between;font-size:11px;color:#b8c4ca}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #ffffff15;font-size:13px}.status{font-size:10px;color:#ffc584}.hintbox{border:1px solid #ffc5843e;background:#f6aa4616;border-radius:12px;color:#f7d7a6;padding:13px;font-size:12px;line-height:1.55;margin-top:12px}.overlay{position:fixed;inset:0;background:#020407c9;display:none;align-items:center;justify-content:center;padding:20px;z-index:30;backdrop-filter:blur(10px)}.overlay.show{display:flex}.modal{background:#17212a;border:1px solid #ffffff2b;border-radius:23px;padding:24px;width:min(480px,100%);max-height:90vh;overflow:auto;box-shadow:0 30px 90px #000c}.modal h2{margin:0 0 17px;font-size:20px}.modal-fields{display:grid;gap:10px}.modal label{font-size:12px;color:#d3e0e7;font-weight:700;margin-top:5px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.toast{position:fixed;bottom:19px;left:50%;transform:translate(-50%,18px);opacity:0;background:#26382e;border:1px solid #b5fb4750;color:#eaffe1;padding:11px 16px;border-radius:12px;font-size:13px;z-index:50;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.hidden{display:none!important}
@media(min-width:1500px){.shell{padding:17px 23px}.scenery{height:150px}.main-weather,.main-calendar,.main-bus,.main-house{min-height:270px}.bottom-tile{height:208px}.tile{padding:19px}.weather-glyph{font-size:64px}.temperature{font-size:59px}}
@media(max-width:1120px){.shell{padding:9px 11px}.topnav{gap:6px}.identity{font-size:13px}.identity .brand{width:26px;height:26px}.tab{font-size:11px;padding:9px}.tab svg{width:15px;height:15px}.navright{font-size:11px}.navright .clock{font-size:13px}.scenery{height:110px}.hero-text h1{font-size:25px}.tile{padding:12px}.dashboard{gap:8px}.main-weather{grid-column:span 3}.main-calendar{grid-column:span 4}.main-bus{grid-column:span 3}.main-house{grid-column:span 2}.main-weather,.main-calendar,.main-bus,.main-house{min-height:216px}.tile-name{font-size:12px}.bottom-tile{height:155px}.temperature{font-size:43px}.weather-glyph{font-size:43px}.house-big{font-size:31px}.bottom-tile .value{font-size:13px}}
@media(max-width:930px){.navright .status-txt{display:none}.tab span{display:none}.tab{padding:10px 12px}.dashboard .main-weather{grid-column:span 4}.dashboard .main-calendar{grid-column:span 5}.dashboard .main-bus{grid-column:span 3}.dashboard .main-house{grid-column:span 4}.dashboard .bottom-meal{grid-column:span 4}.dashboard .bottom-sport{grid-column:span 4}.dashboard .bottom-football{grid-column:span 4}.dashboard .bottom-task{grid-column:span 6}.dashboard .bottom-birthday{grid-column:span 6}.page-grid{grid-template-columns:1fr}.shell{overflow:auto}}
@media(max-width:700px){.shell{padding:8px 9px}.topnav{height:auto;flex-wrap:wrap;padding-bottom:7px}.tabs{order:3;width:100%;justify-content:space-between}.tab span{display:none}.scenery{height:110px}.hero-text{left:14px;top:17px}.hero-side{right:13px;bottom:15px}.hero-text h1{font-size:22px}.dashboard .main-weather,.dashboard .main-calendar,.dashboard .main-bus,.dashboard .main-house{grid-column:span 12}.dashboard .bottom-meal,.dashboard .bottom-sport,.dashboard .bottom-football,.dashboard .bottom-task,.dashboard .bottom-birthday{grid-column:span 6}.bottom-tile{height:150px}.main-weather,.main-calendar,.main-bus,.main-house{min-height:200px}.weather-glyph{font-size:58px}.tile{padding:15px}.monthcell{min-height:70px;padding:4px}}

/* FamilyHub 1.4 · Cinematic weather-first iPad landscape */
:root{--lime:#b8f854;--panel:#121920}
html,body{background:#060a0c}
.shell{max-width:1500px;padding:11px 16px 12px}
.topnav{height:56px}
.identity{font-size:18px}
.tab{padding:10px 14px}
.tab.active{box-shadow:0 7px 19px #a9f74a26}
.scenery{height:238px;margin:7px 0 14px;border-radius:22px;background-color:#172431;background-image:url('scenery.svg');background-position:center 52%;isolation:isolate;transition:filter 1s ease,background-color 1s ease}
.scenery::after{z-index:1;pointer-events:none;background:linear-gradient(90deg,#050a0de8 0%,#050a0d7b 31%,transparent 58%,#050a0d8c 100%),linear-gradient(0deg,#050a0dc4,transparent 58%)}
.sky-tint{position:absolute;inset:0;z-index:0;pointer-events:none;transition:background 2s ease;background:linear-gradient(180deg,#6ab4fc05,#f6be8114)}
.scenery.is-night .sky-tint{background:linear-gradient(180deg,#020713e5,#07122fc9 55%,#040b15bf)}
.scenery.sky-rain .sky-tint,.scenery.sky-storm .sky-tint{background:linear-gradient(180deg,#050c18d8,#15212abe)}
.scenery.sky-snow .sky-tint{background:linear-gradient(180deg,#8ab7d966,#dce9e54d)}
.scenery.sky-fog .sky-tint{background:linear-gradient(180deg,#aab8beaa,#677b88a0)}
.scenery.sky-cloudy .sky-tint{background:linear-gradient(180deg,#24364280,#2d3a4d47)}
.scenery.sky-clear:not(.is-night) .sky-tint{background:linear-gradient(180deg,#448de025,#ffce8647)}
.celestial{position:absolute;left:65%;top:16%;width:78px;height:78px;border-radius:50%;background:#ffdb88;box-shadow:0 0 35px 8px #ffc87996,0 0 110px 45px #ffc8794c;z-index:0;transition:all 1.3s ease}
.scenery.is-night .celestial{background:#e4ebff;box-shadow:0 0 22px #a7bdff7d,0 0 65px #b8c9ff4a;width:59px;height:59px;top:16%;left:69%}
.scenery.sky-cloudy .celestial,.scenery.sky-fog .celestial{opacity:.23}
.scenery.sky-rain .celestial,.scenery.sky-snow .celestial,.scenery.sky-storm .celestial{opacity:0}
.sky-stars{position:absolute;inset:0;z-index:0;opacity:0;background-image:radial-gradient(1px 1px at 12% 22%,white 98%,transparent),radial-gradient(2px 2px at 32% 15%,white 98%,transparent),radial-gradient(1px 1px at 55% 28%,white 98%,transparent),radial-gradient(1px 1px at 82% 14%,white 98%,transparent),radial-gradient(2px 2px at 90% 45%,white 98%,transparent),radial-gradient(1px 1px at 72% 10%,white 98%,transparent);transition:opacity 1.5s}
.is-night .sky-stars{opacity:.75}
.weather-cloud{position:absolute;z-index:1;width:240px;height:55px;border-radius:60px;background:linear-gradient(180deg,#a9bacbcc,#728496df);filter:blur(4px);opacity:0;pointer-events:none;box-shadow:38px -22px 16px 3px #97a9bbca,-47px -9px 16px #8a9ca9c4;animation:cloudDrift 22s ease-in-out infinite alternate}
.cloud-one{top:43%;left:52%}.cloud-two{top:24%;left:73%;transform:scale(.7);animation-delay:-9s}
.sky-cloudy .weather-cloud,.sky-partly .cloud-one,.sky-rain .weather-cloud,.sky-snow .weather-cloud,.sky-storm .weather-cloud,.sky-fog .weather-cloud{opacity:.65}
.sky-rain .weather-cloud,.sky-storm .weather-cloud{opacity:.94;background:linear-gradient(180deg,#687a87,#394d60)}
.sky-snow .weather-cloud{background:linear-gradient(180deg,#ecf4fa,#a6bbca)}
.rain-layer,.snow-layer{position:absolute;inset:-25% 0 0;z-index:1;pointer-events:none;opacity:0}
.rain-layer{background-image:repeating-linear-gradient(103deg,transparent 0 27px,#c4dfff80 28px 30px,transparent 31px 75px);background-size:150px 130px;mask-image:linear-gradient(90deg,transparent 25%,black 46%,black 90%,transparent);animation:rainfall .5s linear infinite}
.sky-rain .rain-layer,.sky-storm .rain-layer{opacity:.7}
.sky-storm .rain-layer{animation-duration:.32s}
.sky-storm .sky-tint{animation:lightning 7s linear infinite}
.snow-layer{background-image:radial-gradient(circle,#fff 0 2px,transparent 3px),radial-gradient(circle,#ecfaff 0 2px,transparent 3px);background-size:51px 66px,83px 91px;background-position:0 0,16px 27px;animation:snowfall 9s linear infinite}
.sky-snow .snow-layer{opacity:.88}
@keyframes rainfall{to{background-position:-44px 130px}}@keyframes snowfall{to{background-position:45px 135px,20px 210px}}@keyframes cloudDrift{to{translate:36px 2px}}@keyframes lightning{0%,87%,90%,100%{filter:none}88%,89%{filter:brightness(2.8)}}
.hero-text{top:42px;left:36px;z-index:3}.hero-text h1{font-size:39px;letter-spacing:-1.7px;margin:8px 0 8px}.hero-eyebrow{font-size:13px!important;font-weight:750;letter-spacing:.3px;color:#d1dce1!important;text-transform:none}.hero-caption{font-size:13px!important;color:#d7e2e8!important}
.hero-weather{position:absolute;z-index:3;right:26px;top:25px;bottom:22px;width:275px;border:1px solid #ffffff27;background:linear-gradient(145deg,#17212c93,#0a1019a1);backdrop-filter:blur(14px);border-radius:18px;padding:15px 19px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 10px 34px #0005}
.hero-location{font-size:11px;font-weight:750;color:#c8d8df;letter-spacing:.2px}
.hero-w-main{display:flex;align-items:center;gap:9px}.hero-icon{font-size:39px;line-height:1}.hero-degrees{font-size:49px;font-weight:850;letter-spacing:-2px;line-height:1}.hero-w-desc{font-size:12px;max-width:85px;color:#d7e0e5;line-height:1.25}
.hero-forecast{border-top:1px solid #ffffff23;padding-top:11px;color:#cbd6dc;font-size:11px}.outlook{display:flex;gap:20px}.outlook span{display:grid;gap:3px}.outlook b{color:#fff;font-size:13px}
.weather-preview-label{position:absolute;z-index:4;left:36px;bottom:18px;background:#b8f854;color:#142018;border-radius:30px;padding:6px 10px;font-size:10px;font-weight:800;letter-spacing:1px}.weather-preview-label[hidden]{display:none}
.dashboard{gap:12px}.tile{background:linear-gradient(130deg,#19222bf5,#0f161cf5);border-color:#ffffff1b;border-radius:18px}.main-calendar{grid-column:span 5}.main-bus{grid-column:span 4}.main-house{grid-column:span 3}.main-calendar,.main-bus,.main-house{min-height:218px}.main-weather{display:none}
.bottom-meal{grid-column:span 3}.bottom-sport{grid-column:span 3}.bottom-football{grid-column:span 2}.bottom-task{grid-column:span 2}.bottom-birthday{grid-column:span 2}.bottom-tile{height:177px}
.bottom-meal{background:linear-gradient(90deg,#2c2018ed,#181c20d9),radial-gradient(circle at 90% 80%,#c77a4b,#2c2018 70%)}
.bottom-sport{background:radial-gradient(circle at 100% 85%,#43749597,transparent 60%),#141b24}
.bottom-football{background:radial-gradient(circle at 90% 100%,#23774799,transparent 70%),#141f24}
.bottom-task{background:radial-gradient(circle at 100% 95%,#41755d80,transparent 70%),#141b20}
.bottom-birthday{background:radial-gradient(circle at 90% 90%,#895c8680,transparent 70%),#171a25}
.bottom-tile .value{position:relative;z-index:2}.bottom-tile .detail{position:relative;z-index:2}.emoji-large{opacity:.4;font-size:60px}
.tile:hover.tile-button{box-shadow:0 8px 32px #0008;border-color:#ffffff4d}
.weather-test-actions{display:flex;gap:7px;flex-wrap:wrap}
@media(max-width:1120px){.scenery{height:202px}.hero-text{left:27px;top:32px}.hero-text h1{font-size:32px}.hero-weather{width:240px;right:18px;top:15px;bottom:15px}.hero-degrees{font-size:42px}.hero-icon{font-size:32px}.main-calendar{grid-column:span 5}.main-bus{grid-column:span 4}.main-house{grid-column:span 3}.main-calendar,.main-bus,.main-house{min-height:215px}.bottom-tile{height:153px}.bottom-meal{grid-column:span 3}.bottom-sport{grid-column:span 3}.bottom-football{grid-column:span 2}.bottom-task{grid-column:span 2}.bottom-birthday{grid-column:span 2}.bottom-tile .value{font-size:12px}.tile{padding:13px}}
@media(max-width:930px){.dashboard .main-calendar{grid-column:span 5}.dashboard .main-bus{grid-column:span 4}.dashboard .main-house{grid-column:span 3}.dashboard .bottom-meal{grid-column:span 3}.dashboard .bottom-sport{grid-column:span 3}.dashboard .bottom-football{grid-column:span 2}.dashboard .bottom-task{grid-column:span 2}.dashboard .bottom-birthday{grid-column:span 2}}
@media(max-width:700px){.scenery{height:240px}.hero-text{top:24px;left:18px}.hero-text h1{font-size:28px}.hero-weather{width:180px;top:auto;bottom:12px;right:11px;height:140px;padding:11px}.hero-location{font-size:9px}.hero-degrees{font-size:34px}.hero-icon{font-size:23px}.hero-w-desc{font-size:10px}.hero-forecast{font-size:10px}.outlook{gap:9px}.outlook b{font-size:10px}.dashboard .main-calendar,.dashboard .main-bus,.dashboard .main-house{grid-column:span 12}.dashboard .bottom-meal,.dashboard .bottom-sport,.dashboard .bottom-football,.dashboard .bottom-task,.dashboard .bottom-birthday{grid-column:span 6}.dashboard .bottom-birthday{grid-column:span 12}}
@media(prefers-reduced-motion:reduce){.rain-layer,.snow-layer,.weather-cloud,.sky-storm .sky-tint{animation:none}}


/* FamilyHub 1.5 / photographic responsive landscape, iPad-first */
.scenery{background-image:var(--weather-photo,url('weather/cloud.webp'));background-size:cover;background-position:center 50%;height:230px;border-radius:22px;box-shadow:0 14px 40px #0008;transition:background-image .65s ease, filter .9s ease}
.scenery::after{background:linear-gradient(90deg,rgba(0,7,14,.62) 0%,rgba(0,7,14,.35) 29%,rgba(0,7,14,.03) 59%,rgba(0,7,14,.3) 100%),linear-gradient(0deg,rgba(0,7,14,.45),transparent 56%);z-index:1}
.sky-tint{mix-blend-mode:normal;opacity:.35}
.scenery.sky-rain .sky-tint,.scenery.sky-storm .sky-tint{opacity:.26}
.scenery.sky-snow .sky-tint{opacity:.18}
.scenery.is-night .sky-tint{opacity:.37}
.celestial{display:none}
.sky-stars{z-index:2}
.weather-cloud{z-index:2;filter:blur(12px);opacity:0;box-shadow:40px -20px 20px 5px #91a0ad8a,-50px -9px 18px #84939ea3}
.sky-cloudy .weather-cloud,.sky-partly .cloud-one{opacity:.25}
.sky-rain .weather-cloud,.sky-storm .weather-cloud{opacity:.42}
.sky-snow .weather-cloud{opacity:.23}
.rain-layer,.snow-layer{z-index:2}
.rain-layer{mask-image:linear-gradient(90deg,transparent 2%,black 18%,black 92%,transparent);opacity:0}
.sky-rain .rain-layer,.sky-storm .rain-layer{opacity:.55}
.hero-text{left:31px;top:19px;z-index:4}.hero-text h1{font-size:34px;margin:4px 0;line-height:1.1;text-shadow:0 2px 20px #0009}.hero-caption{display:none}.hero-eyebrow{font-size:12px!important}
.hero-weather{inset:90px 28px 18px 31px;z-index:4;width:auto;border:0;border-radius:0;background:none;backdrop-filter:none;box-shadow:none;padding:0;display:flex;align-items:flex-end;justify-content:space-between;flex-direction:row;gap:10px;pointer-events:none}
.hero-location{position:absolute;left:0;bottom:2px;font-size:12px;letter-spacing:0;opacity:.93}
.hero-w-main{display:flex;align-items:center;gap:13px;align-self:flex-start;text-shadow:0 2px 20px #000a}
.hero-icon{font-size:57px;filter:drop-shadow(0 3px 10px #0009)}
.hero-degrees{font-size:66px;font-weight:850;letter-spacing:-3px}
.hero-w-desc{max-width:170px;font-size:15px;font-weight:650;color:#f5f7fb}
.hero-forecast{margin-left:auto;align-self:flex-end;min-width:230px;padding:14px 18px;border:1px solid #ffffff32;border-radius:18px;background:#06111abb;backdrop-filter:blur(14px);box-shadow:0 10px 28px #0007;font-size:12px;pointer-events:auto}
.outlook{justify-content:space-around;gap:20px}.outlook span{gap:8px}.outlook b{font-size:16px}
.weather-preview-label{left:auto;right:22px;top:14px;bottom:auto;z-index:5}
.tile{background:linear-gradient(135deg,#17212bc9,#0b1218f2);border:1px solid #ffffff26;box-shadow:0 12px 28px #0004;border-radius:19px}
.dashboard{gap:13px}.main-calendar,.main-bus,.main-house{min-height:215px}.bottom-tile{height:172px}
.bottom-meal{background:radial-gradient(circle at 90% 100%,#83482999,transparent 65%),linear-gradient(140deg,#28221e,#111a1b)}
.bottom-sport{background:radial-gradient(circle at 100% 100%,#19426999,transparent 65%),linear-gradient(150deg,#17202b,#101519)}
.bottom-football{background:radial-gradient(circle at 95% 100%,#16734288,transparent 70%),linear-gradient(150deg,#122529,#0e1519)}
.bottom-task{background:linear-gradient(150deg,#172423,#0c1419)}
.bottom-birthday{background:radial-gradient(circle at 100% 100%,#643e6688,transparent 65%),linear-gradient(150deg,#1f1c24,#11181b)}
@media(max-width:1120px){.scenery{height:207px}.hero-text{left:24px;top:15px}.hero-text h1{font-size:29px}.hero-weather{inset:79px 20px 15px 24px}.hero-icon{font-size:45px}.hero-degrees{font-size:54px}.hero-w-desc{font-size:13px}.hero-forecast{min-width:205px;padding:11px 14px}.bottom-tile{height:147px}}
@media(max-width:700px){.scenery{height:280px}.hero-weather{inset:79px 15px 14px 17px;display:block}.hero-w-main{align-self:auto}.hero-forecast{position:absolute;bottom:0;right:0;min-width:160px}.hero-location{bottom:10px;left:0}.hero-text{left:17px}}
/* FamilyHub 1.6 calendar source details */
.external-label{font-size:10px;color:#b5fb47;background:rgba(181,251,71,.1);padding:6px 8px;border-radius:9px;white-space:nowrap}
.event-color-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:8px;vertical-align:middle}
a.action{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
/* Bundesliga 1.7.1 – compact live score, readable on landscape iPad */
.sport-score{font-size:19px;font-weight:800;color:#b5fb47;white-space:nowrap;margin-left:10px;font-variant-numeric:tabular-nums}
@media(max-width:700px){.sport-score{font-size:16px}}

/* Favorite clubs – visual priority without distracting from the sport overview */
.favrow{border-left:3px solid rgba(181,251,71,.65);padding-left:12px;background:rgba(181,251,71,.035);border-radius:10px;margin:5px 0}
.favrow.fav-hsv,.favrow.fav-pauli{border-left-color:rgba(130,183,230,.62);background:rgba(130,183,230,.025)}
.fav-rank{color:#b5fb47;font-size:17px;width:22px;flex:none}
.fav-hsv .fav-rank,.fav-pauli .fav-rank{color:#8cb7e2}
.fav-live-title{font-size:12px;color:#ff6c6c;font-weight:800;padding:11px 0 5px}
.fav-match{background:rgba(181,251,71,.035);border-radius:10px;padding-left:9px}
/* FamilyHub 1.8.0 Spotify Premium player */
#spotify-player{min-height:280px}.music-empty{padding:26px 10px;color:#cbdad1}.music-empty p{line-height:1.5;font-size:13px;color:#9eada8}.spotify-now{display:flex;align-items:center;gap:17px;margin:14px 0 22px;min-height:100px}.spotify-cover{width:102px;height:102px;object-fit:cover;border-radius:15px;border:1px solid #ffffff25;flex-shrink:0;box-shadow:0 12px 30px #0007}.spotify-fallback{display:grid;place-items:center;background:linear-gradient(145deg,#275d43,#0a231d);font-size:38px;color:var(--lime)}.spotify-text{min-width:0;display:grid;gap:8px}.spotify-text strong{font-size:21px;letter-spacing:-.5px;overflow-wrap:anywhere}.spotify-text span{color:#9baeb0;font-size:12px}.spotify-kicker{color:var(--lime);font-size:10px;font-weight:800;letter-spacing:1.1px}.spotify-controls{display:flex;gap:11px;align-items:center;justify-content:center;margin:17px 0 22px}.spotify-controls button{border:1px solid #ffffff21;background:#ffffff10;color:white;border-radius:50%;width:46px;height:46px;font-size:20px}.spotify-controls button.spotify-play{width:58px;height:58px;background:var(--lime);color:#111c12;font-size:23px;font-weight:900}.spotify-options{display:flex;align-items:flex-end;gap:10px;margin:14px 0}.spotify-options label{min-width:0;flex:1;font-size:11px;color:#a9bcc0;font-weight:650;display:grid;gap:6px}.spotify-options select{background:#1c2930;color:white;border:1px solid #ffffff2b;border-radius:10px;padding:10px 8px;min-width:0;width:100%;font-size:12px}.spotify-options button{flex-shrink:0}.spotify-volume{display:flex;align-items:center;gap:15px;margin:15px 0;font-size:12px;color:#b6c8c5}.spotify-volume input{flex:1;accent-color:var(--lime)}.spotify-note{color:#aec0bc;font-size:11px;min-height:25px}.spotify-airplay{width:100%;text-align:left;color:#d7e6db;background:#ffffff0b;border:1px solid #b5fb473c;border-radius:12px;padding:13px 14px;font-weight:750;margin-top:9px}.spotify-airplay:hover{background:#b5fb471a}@media(max-width:600px){.spotify-options{flex-wrap:wrap}.spotify-options button{width:100%}}

/* FamilyHub 1.8.1 – three readable matches per sport on iPad landscape */
.dashboard{display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}
.dashboard .bottom-sport,.dashboard .bottom-football{grid-column:span 6}
.dashboard .bottom-meal,.dashboard .bottom-task,.dashboard .bottom-birthday{grid-column:span 4}
.dashboard .sport-overview{height:auto;min-height:208px;display:block;padding:16px 18px}
.sport-overview h3{font-size:15px;margin:0 0 13px;padding-right:22px}
.sport-mini-list{display:flex;flex-direction:column;gap:0;position:relative;z-index:2}
.sport-mini-row{border-top:1px solid rgba(255,255,255,.105);min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;min-height:48px}
.sport-mini-team{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:720;line-height:1.35}
.sport-mini-versus{color:#84969b;margin:0 5px}
.sport-mini-meta{color:#aab8bc;font-size:11px;white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}
.sport-mini-result{font-size:13px;color:#e9fdd8;margin-left:7px;white-space:nowrap}
.sport-mini-fav{color:var(--lime);padding-right:5px}
.sport-live{color:#ff8989;font-size:10px;letter-spacing:.5px}
.sport-mini-live{background:linear-gradient(90deg,rgba(202,57,61,.13),transparent 65%);margin:0 -7px;padding-left:7px;padding-right:7px;border-radius:8px}
.sport-mini-hint{color:#8fa2a6;font-size:11px;padding-top:9px}
.sport-empty{font-size:12px;line-height:1.55;color:#c2d0d1;padding:14px 0}
.sport-empty span{display:block;margin-top:7px;color:#8fa2a6}
.sport-overview .arrow{right:14px;top:17px;bottom:auto}
.sport-overview .emoji-large{display:none}
@media(max-width:1120px){.dashboard .bottom-sport,.dashboard .bottom-football{grid-column:span 6}.dashboard .bottom-meal,.dashboard .bottom-task,.dashboard .bottom-birthday{grid-column:span 4}.dashboard .sport-overview{min-height:208px;padding:13px}.sport-mini-row{padding:9px 0;min-height:45px}.sport-mini-team{font-size:11px}.sport-mini-meta{font-size:10px}.sport-mini-result{font-size:12px}}
@media(max-width:700px){.dashboard .bottom-sport,.dashboard .bottom-football{grid-column:span 12}.dashboard .bottom-meal,.dashboard .bottom-task,.dashboard .bottom-birthday{grid-column:span 12}}
