* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,sans-serif; background:linear-gradient(135deg,#0f0c29,#302b63,#24243e); color:#e0e0e0; min-height:100vh; line-height:1.6; }
.container { max-width:1000px; margin:0 auto; padding:2rem 1rem; }
header { text-align:center; margin-bottom:1.5rem; }
header h1 { font-size:2.5rem; background:linear-gradient(90deg,#ff6b6b,#feca57,#48dbfb); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
.subtitle { color:#888; margin-top:.5rem; }
.tabs { display:flex; gap:.5rem; margin-bottom:1.5rem; border-bottom:1px solid rgba(255,255,255,.12); overflow-x:auto; }
.tab-btn { text-decoration:none; display:inline-block; padding:.7rem 1.1rem; background:transparent; border:none; border-bottom:2px solid transparent; color:#aaa; font-size:.95rem; cursor:pointer; white-space:nowrap; }
.tab-btn:hover { color:#fff; }
.tab-btn.active { color:#fff; border-bottom-color:#48dbfb; }
.tab-panel { display:none; }
.tab-panel.active { display:block; }
.weather-widget,.content,.tool-panel { background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); border-radius:16px; padding:1.5rem; margin-bottom:2rem; backdrop-filter:blur(10px); }
.weather-header { display:flex; align-items:center; gap:.75rem; margin-bottom:1.5rem; flex-wrap:wrap; }
.weather-header h2 { font-size:1.25rem; margin-right:auto; }
#city-input { flex:1; min-width:150px; padding:.5rem .75rem; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); border-radius:8px; color:#e0e0e0; font-size:.95rem; }
#city-input::placeholder { color:#666; }
#search-btn,.tool-action { padding:.55rem 1rem; background:linear-gradient(135deg,#667eea,#764ba2); border:none; border-radius:8px; color:white; font-size:.95rem; cursor:pointer; }
#search-btn:hover,.tool-action:hover { opacity:.85; }
.tool-action.secondary { background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.15); }
.weather-content { text-align:center; }
.weather-loading { color:#888; padding:2rem 0; }
.weather-main { display:flex; align-items:center; justify-content:center; gap:1rem; margin-bottom:1rem; }
.weather-icon { font-size:3rem; }
.weather-temp { font-size:3rem; font-weight:300; }
.weather-desc { color:#aaa; font-size:1.1rem; margin-bottom:.5rem; }
.weather-location { color:#888; font-size:.95rem; }
.weather-details { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:1rem; margin-top:1.5rem; }
.weather-detail { background:rgba(255,255,255,.05); border-radius:10px; padding:.75rem; }
.weather-detail-label { font-size:.8rem; color:#888; text-transform:uppercase; letter-spacing:.5px; }
.weather-detail-value { font-size:1.1rem; margin-top:.25rem; }
.weather-error { color:#ff6b6b; padding:1rem 0; }
.content h2 { margin-bottom:.75rem; }
.content p { color:#bbb; margin-bottom:.5rem; }
.books-section { min-height:300px; }
.book-card { display:flex; align-items:center; gap:1.5rem; margin-top:1.25rem; }
.book-cover { width:160px; max-width:42%; height:auto; border-radius:6px; box-shadow:0 8px 24px rgba(0,0,0,.35); }
.book-info h3 { margin-bottom:.25rem; }
.book-author { color:#aaa; }
.tools-intro,.games-intro { margin-bottom:1.25rem; }
.tool-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.9rem; margin-bottom:1.5rem; }
.tool-card { text-align:left; padding:1rem; min-height:145px; border-radius:14px; border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.06); color:#eee; cursor:pointer; transition:transform .15s,border-color .15s,background .15s; }
.tool-card:hover { transform:translateY(-2px); border-color:rgba(72,219,251,.5); background:rgba(255,255,255,.09); }
.tool-card strong { display:block; font-size:1rem; margin:.5rem 0 .25rem; }
.tool-card>span:last-child { display:block; color:#999; font-size:.82rem; line-height:1.4; }
.tool-icon { font-size:1.35rem; color:#48dbfb; font-weight:600; }
.tool-panel { display:none; }
.tool-panel.active { display:block; }
.tool-panel-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:1.2rem; }
.tool-panel-header h3 { font-size:1.2rem; }
.close-tool { background:transparent; color:#aaa; border:1px solid rgba(255,255,255,.15); border-radius:7px; padding:.4rem .7rem; cursor:pointer; }
.tool-form { display:grid; gap:1rem; }
.two-col { grid-template-columns:repeat(2,minmax(0,1fr)); }
.tool-form label { display:flex; flex-direction:column; gap:.35rem; color:#aaa; font-size:.85rem; }
.tool-form input,.tool-form select,.tool-textarea { width:100%; padding:.65rem .75rem; border-radius:8px; border:1px solid rgba(255,255,255,.15); background:rgba(0,0,0,.2); color:#eee; font:inherit; }
.tool-form select option { background:#24243e; color:#eee; }
.tool-textarea { min-height:220px; resize:vertical; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.tool-textarea.output { margin-top:1rem; }
.tool-actions { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem; }
.tool-result { margin-top:1rem; padding:1rem; min-height:48px; border-radius:10px; background:rgba(0,0,0,.18); color:#ddd; }
.tool-result.error { color:#ff8b8b; }
.tool-result.success { color:#9ee7b1; }
.tool-result code { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.result-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:.6rem 1rem; }
.result-item span { display:block; color:#888; font-size:.78rem; }
.result-item strong { font-weight:500; }
.password-result { word-break:break-all; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:1.05rem; user-select:all; }
.game-project-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-top:1.25rem; }
.game-project { padding:1.25rem; border-radius:14px; border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.05); }
.game-project-header { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.75rem; }
.game-icon { font-size:1.7rem; }
.project-status { padding:.3rem .6rem; border-radius:999px; background:rgba(254,202,87,.12); border:1px solid rgba(254,202,87,.25); color:#feca57; font-size:.72rem; text-transform:uppercase; letter-spacing:.5px; white-space:nowrap; }
.game-project h3 { font-size:1.15rem; margin-bottom:.4rem; }
.game-project p { color:#aaa; font-size:.9rem; }
.project-meta { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem; }
.project-meta span { color:#888; font-size:.75rem; padding:.3rem .5rem; border-radius:6px; background:rgba(0,0,0,.18); }
.project-placeholder { margin-top:1rem; padding:.75rem; border:1px dashed rgba(255,255,255,.18); border-radius:8px; color:#777; font-size:.8rem; text-align:center; }
.section-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1.25rem; }
.section-subtitle { color:#888; font-size:.85rem; }
.mock-badge { color:#feca57; border:1px solid rgba(254,202,87,.3); background:rgba(254,202,87,.1); padding:.3rem .55rem; border-radius:6px; font-size:.7rem; font-weight:600; letter-spacing:.5px; white-space:nowrap; }
.activity-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.8rem; margin-bottom:1rem; }
.activity-card { padding:1rem; border-radius:12px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); }
.activity-card span,.activity-card small { display:block; color:#888; font-size:.75rem; }
.activity-card strong { display:block; font-size:1.8rem; margin:.2rem 0; font-weight:500; }
.dashboard-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.dashboard-card { padding:1.2rem; border-radius:14px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); margin-top:1rem; }
.dashboard-card h3 { margin-bottom:1rem; font-size:1.05rem; }
.stat-list>div,.calendar-list>div { display:flex; justify-content:space-between; gap:1rem; padding:.7rem 0; border-bottom:1px solid rgba(255,255,255,.07); }
.stat-list>div:last-child,.calendar-list>div:last-child { border-bottom:none; }
.stat-list span,.calendar-list span { color:#aaa; font-size:.85rem; }
.stat-list strong { font-size:.8rem; font-weight:500; text-align:right; }
.calendar-list time { color:#48dbfb; font-size:.78rem; min-width:105px; }
.dashboard-note { color:#777 !important; font-size:.75rem; margin-top:.9rem; }
.recent-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; }
.recent-grid>div { padding:.8rem; border-radius:9px; background:rgba(0,0,0,.15); }
.recent-grid strong,.recent-grid span { display:block; }
.recent-grid strong { font-size:.85rem; }
.recent-grid span { color:#777; font-size:.72rem; margin-top:.25rem; }
footer { text-align:center; color:#555; font-size:.85rem; }
@media (max-width:800px) {
    .tool-grid { grid-template-columns:repeat(2,1fr); }
    .game-project-grid,.dashboard-grid { grid-template-columns:1fr; }
    .activity-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:600px) {
    header h1 { font-size:1.8rem; }
    .weather-temp { font-size:2.5rem; }
    .weather-details { grid-template-columns:1fr 1fr; }
    .book-card { align-items:flex-start; }
    .book-cover { width:120px; }
    .two-col { grid-template-columns:1fr; }
    .section-heading { align-items:flex-start; }
    .recent-grid { grid-template-columns:1fr; }
}
@media (max-width:420px) {
    .tool-grid { grid-template-columns:1fr; }
    .activity-grid { grid-template-columns:1fr 1fr; }
}
/* SDR image opportunity planner */
.sdr-section{overflow:hidden}.sdr-refresh{padding:.5rem .85rem;border-radius:8px;border:1px solid rgba(72,219,251,.25);background:rgba(72,219,251,.08);color:#bcefff;cursor:pointer}.sdr-location{color:#999;font-size:.78rem;margin:-.55rem 0 1rem}.sdr-status{color:#999;font-size:.78rem;padding:.65rem .8rem;border-radius:8px;background:rgba(0,0,0,.14);margin-bottom:1rem}.sdr-status.ready{color:#9ee7b1}.sdr-status.error{color:#ff9b9b}.sdr-next-card{padding:1rem 1.1rem;border-radius:12px;border:1px solid rgba(72,219,251,.2);background:rgba(72,219,251,.06);margin-bottom:1rem}.sdr-next-card span,.sdr-next-card small{display:block;color:#888;font-size:.75rem}.sdr-next-card strong{display:block;font-size:1.2rem;margin:.2rem 0}.sdr-next-card div{color:#bbb;font-size:.85rem}.sdr-target-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.sdr-card{padding:1rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.sdr-card.featured{border-color:rgba(72,219,251,.3)}.sdr-card-top{display:flex;justify-content:space-between}.sdr-rank{color:#48dbfb;font-size:.75rem;font-weight:600}.sdr-rating{color:#feca57;font-size:.7rem;text-transform:uppercase}.sdr-card h3{margin:.35rem 0 .15rem;font-size:1rem}.sdr-time{color:#bbb!important;font-size:.8rem;margin:0 0 .7rem!important}.sdr-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem;margin-bottom:.7rem}.sdr-metrics span{padding:.45rem;border-radius:7px;background:rgba(0,0,0,.15)}.sdr-metrics small,.sdr-metrics b{display:block}.sdr-metrics small{color:#777;font-size:.65rem}.sdr-metrics b{font-size:.8rem;font-weight:500}.sdr-frequency{color:#aaa!important;font-size:.75rem;margin:0!important}.sdr-hardware{color:#777!important;font-size:.7rem;margin:.2rem 0 0!important}.sdr-loading,.sdr-empty{padding:1.25rem;border-radius:10px;background:rgba(0,0,0,.14);color:#888;font-size:.82rem}.sdr-details{margin-top:1rem;color:#888;font-size:.78rem}.sdr-details summary{cursor:pointer;color:#aaa}.sdr-source{margin-top:1rem!important;color:#666!important;font-size:.7rem}@media(max-width:700px){.sdr-target-grid{grid-template-columns:1fr}}

.activity-heading-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.dashboard-customize{padding:.45rem .75rem;border-radius:8px;border:1px solid rgba(72,219,251,.28);background:rgba(72,219,251,.08);color:#bcefff;cursor:pointer;font-size:.78rem}
.dashboard-customize:hover{background:rgba(72,219,251,.14)}
.dashboard-customizer{margin:-.35rem 0 1rem;padding:1rem;border-radius:12px;border:1px solid rgba(72,219,251,.18);background:rgba(0,0,0,.16)}
.dashboard-customizer[hidden]{display:none}
.customizer-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.8rem}
.customizer-header strong,.customizer-header span{display:block}
.customizer-header span{color:#888;font-size:.75rem;margin-top:.15rem}
.customizer-close,.customizer-reset{padding:.4rem .65rem;border-radius:7px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);color:#bbb;cursor:pointer}
.customizer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.customizer-option{display:flex;align-items:center;gap:.55rem;padding:.55rem .65rem;border-radius:8px;background:rgba(255,255,255,.04);color:#ccc;font-size:.82rem;cursor:pointer}
.customizer-option input{width:16px;height:16px;accent-color:#48dbfb}
.customizer-reset{margin-top:.7rem;font-size:.75rem}
@media(max-width:500px){.customizer-grid{grid-template-columns:1fr}.customizer-header{align-items:flex-start}}

.customizer-groups{display:grid;gap:.85rem}
.customizer-group{padding:.7rem;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.025)}
.customizer-group-title{color:#777;font-size:.68rem;font-weight:700;letter-spacing:.08em;margin-bottom:.45rem}
.customizer-list{display:grid;gap:.4rem}
.customizer-option{display:flex;align-items:center;gap:.5rem;padding:.55rem .65rem;border-radius:8px;background:rgba(255,255,255,.04);color:#ccc;font-size:.82rem;cursor:grab;border:1px solid transparent;transition:background .12s,border-color .12s,opacity .12s}
.customizer-option:hover{background:rgba(255,255,255,.07)}
.customizer-option.dragging{opacity:.45;border-color:rgba(72,219,251,.35)}
.customizer-option label{display:flex;align-items:center;gap:.55rem;flex:1;cursor:pointer}
.customizer-option input{width:16px;height:16px;accent-color:#48dbfb}
.drag-handle{color:#666;font-size:1rem;letter-spacing:-.18em;user-select:none}
@media(max-width:500px){.customizer-option{padding:.65rem}.customizer-group{padding:.6rem}}

.telemetry-status.live{color:#9ee7b1;border-color:rgba(158,231,177,.3);background:rgba(158,231,177,.08)}
.telemetry-status.stale{color:#feca57;border-color:rgba(254,202,87,.3);background:rgba(254,202,87,.1)}
.dashboard-widget[hidden]{display:none}
.dashboard-widget[data-service-status="down"]{border-color:rgba(255,107,107,.28)}
.dashboard-widget[data-service-status="up"]{border-color:rgba(158,231,177,.22)}

/* Compact series shelf */
.book-series-card { margin-top:1.5rem; padding:1rem; border-radius:14px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.035); }
.book-series-heading { margin-bottom:.8rem; }
.book-series-heading h3 { margin-bottom:.15rem; }
.book-series-heading p { color:#888; font-size:.8rem; margin:0; }
.book-series-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; }
.series-tile { display:flex; gap:.85rem; padding:.8rem; border-radius:11px; border:1px solid rgba(255,255,255,.09); background:rgba(0,0,0,.12); min-width:0; }
.series-cover { width:72px; height:104px; flex:0 0 72px; object-fit:cover; border-radius:5px; box-shadow:0 5px 16px rgba(0,0,0,.3); }
.series-info { min-width:0; flex:1; }
.series-title-row { display:flex; justify-content:space-between; align-items:flex-start; gap:.5rem; }
.series-info h4 { margin:0; font-size:1rem; line-height:1.25; }
.series-info .book-author { margin:.08rem 0 .25rem; font-size:.78rem; }
.series-info > p { color:#999; font-size:.78rem; line-height:1.4; margin:0 0 .45rem; }
.series-count { color:#888; font-size:.68rem; white-space:nowrap; padding:.18rem .4rem; border-radius:5px; background:rgba(255,255,255,.06); }
.series-info details { font-size:.76rem; }
.series-info summary { color:#aaa; cursor:pointer; user-select:none; }
.series-titles { margin:.4rem 0 0 1.1rem; padding:0; color:#999; }
.series-titles li { margin:.15rem 0; line-height:1.3; }
@media(max-width:800px) {
    .book-series-grid { grid-template-columns:1fr; }
}
@media(max-width:600px) {
    .series-tile { padding:.7rem; }
    .series-cover { width:64px; height:92px; flex-basis:64px; }
}

.series-next { color:#888!important; font-size:.74rem!important; margin:.15rem 0 .45rem!important; }
.series-next strong { color:#aaa; font-weight:500; }

.tide-widget{margin:1rem 0;padding:1rem;border:1px solid #333;border-radius:10px;background:rgba(255,255,255,.02)}
.tide-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.tide-header h2{margin:0}
.tide-location{color:#888;font-size:.8rem}
.tide-next{margin:.8rem 0;padding:.7rem;border-radius:8px;background:rgba(255,255,255,.04)}
.tide-events{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}
.tide-event{display:flex;flex-direction:column;gap:.15rem;padding:.6rem;border:1px solid #333;border-radius:8px}
.tide-type{font-size:.72rem;color:#888;text-transform:uppercase}
.tide-event strong{font-size:1rem}
.tide-event time{font-size:.75rem;color:#888}
.tide-source{display:block;margin-top:.7rem;color:#666}
@media(max-width:600px){.tide-events{grid-template-columns:repeat(2,1fr)}.tide-header{align-items:flex-start;flex-direction:column;gap:.2rem}}

/* Minecraft live server dashboard */
.minecraft-title-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}
.minecraft-title-row h3{margin:0}
.minecraft-version{color:#888;font-size:.72rem;padding:.25rem .45rem;border-radius:5px;background:rgba(0,0,0,.18)}
.minecraft-status.online{color:#9ee7b1;background:rgba(158,231,177,.08);border-color:rgba(158,231,177,.3)}
.minecraft-status.offline{color:#ff9b9b;background:rgba(255,107,107,.08);border-color:rgba(255,107,107,.28)}
.minecraft-primary{display:grid;grid-template-columns:2fr 1fr;gap:.7rem;margin-top:1rem}
.minecraft-primary>div,.minecraft-details>div{padding:.75rem;border-radius:9px;background:rgba(0,0,0,.15)}
.minecraft-label,.minecraft-primary small{display:block;color:#888;font-size:.7rem}
.minecraft-primary strong{display:block;font-size:1.45rem;font-weight:500;margin:.15rem 0}
.minecraft-primary small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.minecraft-details{display:grid;grid-template-columns:1fr 1.5fr;gap:.55rem;margin-top:.7rem}
.minecraft-details>div:last-child{grid-column:1 / -1}
.minecraft-details span,.minecraft-details small{display:block;color:#888;font-size:.68rem}
.minecraft-details strong{display:block;font-size:.8rem;font-weight:500;margin-top:.12rem}
.minecraft-note{margin-top:.75rem!important;color:#777!important;font-size:.72rem!important}
@media(max-width:600px){.minecraft-primary{grid-template-columns:1fr 1fr}.minecraft-details{grid-template-columns:1fr}.minecraft-details>div:last-child{grid-column:auto}}


/* Categorized tool directory */
.tool-search-wrap{display:grid;grid-template-columns:1fr auto;gap:.4rem .8rem;align-items:center;margin:1rem 0 1.1rem}
.tool-search-wrap label{font-size:.82rem;color:#aaa}
.tool-search-wrap input{grid-column:1/-1;width:100%;padding:.8rem .9rem;border-radius:9px;border:1px solid rgba(255,255,255,.16);background:rgba(0,0,0,.2);color:#eee;font:inherit}
.tool-search-wrap input:focus{outline:2px solid rgba(72,219,251,.45);outline-offset:1px}
#tool-search-count{grid-column:2;grid-row:1;color:#777;font-size:.75rem}
.tool-categories{display:grid;gap:.7rem;margin-bottom:1.5rem}
.tool-category{border:1px solid rgba(255,255,255,.11);border-radius:12px;overflow:hidden;background:rgba(255,255,255,.025)}
.tool-category>summary{display:flex;align-items:center;gap:.8rem;padding:.9rem 1rem;cursor:pointer;list-style:none;user-select:none}
.tool-category>summary::-webkit-details-marker{display:none}
.tool-category>summary::after{content:'＋';margin-left:.15rem;color:#888;font-size:1rem}
.tool-category[open]>summary::after{content:'−'}
.tool-category>summary:hover{background:rgba(255,255,255,.04)}
.category-icon{display:grid;place-items:center;flex:0 0 38px;height:38px;border-radius:9px;background:rgba(72,219,251,.09);color:#48dbfb;font-size:1.2rem}
.category-heading{display:flex;flex-direction:column;min-width:0;flex:1}
.category-heading strong{font-size:.95rem;font-weight:600;color:#eee}
.category-heading small{font-size:.75rem;color:#888;line-height:1.35}
.category-count{color:#777;font-size:.72rem;white-space:nowrap}
.tool-category .tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:0 .8rem .8rem;margin:0}
.tool-category .tool-card{min-height:120px}
.tool-category[hidden],.tool-card[hidden]{display:none!important}
.tool-label{display:block;color:#aaa;font-size:.85rem;margin:.75rem 0 .35rem}
#diff-result .diff-added,#diff-result .diff-removed{display:block;white-space:pre-wrap;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:.15rem .4rem;border-radius:4px}
#diff-result .diff-added{color:#9ee7b1;background:rgba(158,231,177,.06)}
#diff-result .diff-removed{color:#ff9b9b;background:rgba(255,107,107,.06)}
@media(max-width:760px){.tool-category .tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.tool-category .tool-grid{grid-template-columns:1fr;padding:0 .6rem .6rem}.tool-category>summary{padding:.8rem}.category-icon{flex-basis:32px;height:32px}.category-heading small{font-size:.7rem}.tool-category .tool-card{min-height:unset}}

/* Kid Weather / Kindle prototype */
.kid-weather-layout{display:grid;grid-template-columns:minmax(220px,280px) 1fr;gap:1.25rem;align-items:start}
.kid-weather-controls{border:1px solid var(--border,#333);border-radius:12px;padding:1rem;background:var(--panel,#111)}
.kid-weather-controls h3{margin-top:0}.kid-weather-controls label{display:block;margin:.8rem 0;font-size:.85rem}.kid-weather-controls input,.kid-weather-controls select{display:block;width:100%;margin-top:.35rem;box-sizing:border-box}
.kw-note{font-size:.78rem;color:#888;line-height:1.45}
.kid-weather-stage{display:flex;justify-content:center;overflow:auto;padding:.5rem}
.kindle-mockup{position:relative;width:min(100%,620px);aspect-ratio:1072/1448;background:#f4f4f0;color:#111;border:14px solid #222;border-radius:14px;box-shadow:0 12px 35px rgba(0,0,0,.25);padding:5.5%;box-sizing:border-box;overflow:hidden;font-family:Arial,sans-serif}
.kw-bg-icon{position:absolute;right:4%;top:5%;width:30%;height:25%;opacity:.13;z-index:0}
.kw-bg-icon svg{width:100%;height:100%}
.kw-title,.kw-temps,.kw-clothes,.kw-weather-specific{position:relative;z-index:1}
.kw-title{text-align:center;font-size:clamp(1.2rem,3.3vw,2rem);font-weight:900;letter-spacing:.12em;margin-bottom:5%}
.kw-temps{display:grid;grid-template-columns:1fr 1fr;gap:6%;border-bottom:3px solid #111;padding-bottom:5%}
.kw-temps>div{text-align:center}.kw-temps span{display:block;font-size:clamp(.62rem,1.5vw,.9rem);font-weight:800;letter-spacing:.1em}
.kw-temps strong{display:block;font-size:clamp(2rem,5.5vw,3.5rem);line-height:1.05;margin:.12em 0}
.kw-temps em{display:block;font-style:normal;font-size:clamp(.85rem,2vw,1.25rem);font-weight:900;letter-spacing:.08em}
.kw-clothes{padding-top:4%}.kw-clothes h3,.kw-weather-specific h3{text-align:center;font-size:clamp(.75rem,1.8vw,1.1rem);letter-spacing:.12em;margin:.2rem 0 .7rem}
.kw-clothing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3%;justify-items:center}
.kw-item{text-align:center;font-weight:800;font-size:clamp(.48rem,1.2vw,.72rem);letter-spacing:.02em}
.kw-item svg{display:block;width:100%;height:auto;max-height:70px;margin:auto auto .2rem}
.kw-weather-specific{margin-top:5%;padding-top:3%;border-top:3px solid #111}
.kw-specific-icons{display:flex;justify-content:center;gap:8%}
.kw-specific-icons .kw-item{width:20%}
@media(max-width:800px){.kid-weather-layout{grid-template-columns:1fr}.kid-weather-controls{order:2}.kid-weather-stage{order:1}.kindle-mockup{width:min(100%,520px)}}


/* Kid Weather visual refinement */
.kindle-mockup{background:#f7f7f2}
.kw-bg-icon{left:50%;right:auto;top:15%;width:62%;height:32%;transform:translateX(-50%);opacity:.10}
.kw-bg-icon svg{stroke-width:3}
.kw-clothing-grid{grid-template-columns:repeat(3,1fr);gap:1.15rem 1rem}
.kw-item{min-width:0}
.kw-item svg{width:clamp(52px,7vw,92px);height:clamp(52px,7vw,92px);max-height:none;stroke-width:5}
.kw-specific-icons{gap:1.5rem;align-items:start}
#kw-specific-icons{display:flex;justify-content:center;gap:1.5rem}
#kw-specific-icons .kw-item{width:clamp(72px,10vw,110px)}
#kw-specific-icons .kw-item svg{width:100%;height:auto}

/* Keep SDR strictly isolated from the Kid Weather panel. */
#kidweather-tab .sdr-section,#kidweather-tab [id^="sdr-"]{display:none!important}
#sdr-tab{display:none}
#sdr-tab.active{display:block}

/* Kid Weather final temperature layout */
.kw-temps>div{display:flex;flex-direction:column;align-items:center}
.kw-temps>div>span{order:1}
.kw-temps>div>em{order:2;font-size:clamp(1.8rem,5vw,3.2rem);line-height:1.05;margin:.08em 0;font-weight:900}
.kw-temps>div>strong{order:3;font-size:clamp(1.4rem,3.8vw,2.5rem);line-height:1.05;margin:.08em 0;font-weight:700}

/* Local moon phase */
.moon-panel{margin-top:1.25rem;padding:1rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.035)}
.moon-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.85rem}
.moon-panel-heading h3{margin:0;font-size:1rem}.moon-panel-heading span{color:#888;font-size:.72rem}.moon-phase-name{color:#bbb!important;font-size:.8rem!important}
.moon-content{display:flex;align-items:center;justify-content:center;gap:1.5rem}.moon-visual{width:74px;height:74px;border-radius:50%;background:#ddd;box-shadow:0 0 18px rgba(255,255,255,.12);position:relative;overflow:hidden}
.moon-visual::before{content:'';position:absolute;inset:0;border-radius:50%;background:#111;transform-origin:center;transform:translateX(calc((.5 - var(--moon-phase)) * 148px));}
.moon-stats{text-align:left;min-width:145px}.moon-stats strong,.moon-stats span{display:block}.moon-stats strong{font-size:1.15rem;font-weight:500}.moon-stats>span{color:#999;font-size:.78rem;margin-top:.1rem}
.moon-meta{display:flex;gap:1rem;margin-top:.65rem;color:#777;font-size:.7rem}.moon-meta b{color:#aaa;font-weight:500}
@media(max-width:480px){.moon-content{gap:1rem}.moon-visual{width:64px;height:64px}.moon-meta{gap:.7rem}}

/* Local moon phase */
.moon-panel{margin-top:1.25rem;padding:1rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.035)}
.moon-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.85rem}.moon-panel-heading h3{margin:0;font-size:1rem}.moon-panel-heading span{color:#888;font-size:.72rem}.moon-phase-name{color:#bbb!important;font-size:.8rem!important}
.moon-content{display:flex;align-items:center;justify-content:center;gap:1.5rem}.moon-visual{width:74px;height:74px;border-radius:50%;background:transparent;box-shadow:0 0 18px rgba(255,255,255,.08);position:relative;overflow:hidden;display:grid;place-items:center;font-size:4rem;line-height:1}.moon-stats{text-align:left;min-width:145px}.moon-stats strong,.moon-stats span{display:block}.moon-stats strong{font-size:1.15rem;font-weight:500}.moon-stats>span{color:#999;font-size:.78rem;margin-top:.1rem}.moon-meta{display:flex;gap:1rem;margin-top:.65rem;color:#777;font-size:.7rem}.moon-meta b{color:#aaa;font-weight:500}
@media(max-width:480px){.moon-content{gap:1rem}.moon-visual{width:64px;height:64px}.moon-meta{gap:.7rem}}

/* Live Kids Weather status and forecast summary */
#kw-refresh{width:100%;margin:.25rem 0 .5rem}
#kw-status{overflow-wrap:anywhere;min-height:2.5em}
.kid-weather-controls input:disabled,.kid-weather-controls select:disabled{opacity:.85;color:var(--text,#eee)}
.kw-forecast-summary{position:relative;z-index:1;text-align:center;font-size:clamp(.7rem,1.6vw,.95rem);font-weight:800;letter-spacing:.035em;line-height:1.35;margin:-2% auto 4%;max-width:90%}


/* Small timestamp on the e-ink weather display */
.kw-updated{position:relative;z-index:1;text-align:center;font-size:clamp(.55rem,1.15vw,.72rem);font-weight:500;letter-spacing:.01em;line-height:1.2;color:inherit;opacity:.72;margin:-2.5% auto 3%;}


/* Beginner-friendly Kid Weather settings and legend */
.kid-weather-stage{flex-direction:column;align-items:center;gap:.8rem;overflow:visible}
.kw-settings-panel{width:min(100%,620px);color:#ddd;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(0,0,0,.16);padding:.8rem 1rem;font-size:.85rem}
.kw-settings-panel summary{cursor:pointer;font-weight:700;color:#e8e8e8}
.kw-toggle{display:flex;align-items:center;gap:.55rem;margin:.85rem 0;padding:.6rem;border-radius:8px;background:rgba(255,255,255,.05)}
.kw-toggle input{width:18px;height:18px;accent-color:#48dbfb}
.kw-legend h3{font-size:1rem;margin:.7rem 0 .45rem}
.kw-legend dl{display:grid;grid-template-columns:minmax(105px,.7fr) 2fr;gap:.55rem .85rem}
.kw-legend dt{font-weight:700;color:#e6e6e6}
.kw-legend dd{color:#bdbdbd;line-height:1.45}
.kw-legend p{color:#888;font-size:.75rem;margin-top:.8rem}
.kw-clothing-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem}
.kw-clothing-grid .kw-item{flex:0 1 clamp(76px,22%,120px)}
@media(max-width:500px){.kw-legend dl{grid-template-columns:1fr;gap:.15rem}.kw-legend dd{margin-bottom:.5rem}.kw-clothing-grid .kw-item{flex-basis:27%}}


/* Homepage celestial-events widget — match the site's dark glass panels */
.celestial-widget{margin:18px 0;padding:18px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:rgba(255,255,255,.06);backdrop-filter:blur(10px);color:#e0e0e0}
.celestial-heading-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.celestial-heading-row h2{margin:2px 0 0;font-size:1.35rem;color:#e0e0e0}
.celestial-eyebrow{margin:0;color:#48dbfb;font-size:.72rem;font-weight:800;letter-spacing:.12em}
.celestial-badge{border:1px solid rgba(72,219,251,.35);color:#bcefff;background:rgba(72,219,251,.08);border-radius:999px;padding:5px 8px;font-size:.68rem;font-weight:800;white-space:nowrap}
.celestial-intro{margin:10px 0 14px;color:#bbb;font-size:.92rem;line-height:1.45}
.celestial-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.celestial-event{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;align-items:start;padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.04)}
.celestial-date{font-size:.76rem;font-weight:800;line-height:1.35;text-transform:uppercase;letter-spacing:.03em;color:#48dbfb}
.celestial-event h3{margin:0 0 4px;font-size:1rem;color:#eee}
.celestial-event p{margin:0;font-size:.88rem;line-height:1.4;color:#e0e0e0}
.celestial-event .celestial-tip{margin-top:5px;color:#aaa;font-size:.8rem}
.celestial-source{margin:12px 0 0;font-size:.72rem;color:#888}
@media(max-width:480px){.celestial-widget{padding:13px}.celestial-event{grid-template-columns:68px minmax(0,1fr);gap:9px;padding:10px}.celestial-heading-row h2{font-size:1.18rem}}


/* Public books library */
.books-library-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}
.books-library-heading h2{margin-bottom:.2rem}
.books-library-heading p{color:#999;font-size:.9rem}
.books-refresh{padding:.5rem .8rem;border:1px solid rgba(72,219,251,.28);border-radius:8px;background:rgba(72,219,251,.08);color:#bcefff;cursor:pointer;white-space:nowrap}
.books-refresh:disabled{opacity:.55;cursor:wait}
.books-controls{display:grid;gap:.45rem;margin:1rem 0}
.books-controls>label,.books-filter-row>label{font-size:.8rem;color:#aaa}
#books-search,#books-format{width:100%;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(0,0,0,.2);color:#eee;font:inherit}
#books-format option{background:#24243e;color:#eee}
.books-filter-row{display:grid;grid-template-columns:auto minmax(130px,200px) 1fr;align-items:center;gap:.65rem;margin-top:.25rem}
#books-count{justify-self:end;color:#888;font-size:.8rem;text-align:right}
.books-status{padding:.8rem .9rem;margin:.8rem 0;border-radius:9px;background:rgba(0,0,0,.16);color:#aaa;font-size:.85rem}
.books-status.error{color:#ff9b9b;border:1px solid rgba(255,107,107,.2)}
.books-status.ready{color:#9ee7b1}
.books-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.book-library-item{display:flex;flex-direction:column;gap:.6rem;min-width:0;padding:1rem;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:rgba(255,255,255,.035)}
.book-library-item h3{font-size:1rem;line-height:1.35;overflow-wrap:anywhere}
.book-library-meta{color:#888;font-size:.78rem;overflow-wrap:anywhere}
.book-library-badges{display:flex;gap:.4rem;flex-wrap:wrap}
.book-library-badge{padding:.18rem .45rem;border-radius:5px;background:rgba(72,219,251,.08);color:#a9e8f7;border:1px solid rgba(72,219,251,.14);font-size:.68rem;text-transform:uppercase}
.book-download{display:inline-block;align-self:flex-start;margin-top:auto;padding:.45rem .7rem;border:1px solid rgba(255,255,255,.14);border-radius:7px;color:#e0e0e0;text-decoration:none;font-size:.82rem;background:rgba(255,255,255,.05)}
.book-download:hover{border-color:rgba(72,219,251,.4);background:rgba(72,219,251,.08)}
.books-empty{grid-column:1/-1;padding:1.2rem;border:1px dashed rgba(255,255,255,.14);border-radius:10px;color:#999;text-align:center}
.books-library-note{margin-top:1rem;color:#777;font-size:.72rem}
@media(max-width:600px){.books-results{grid-template-columns:1fr}.books-filter-row{grid-template-columns:auto minmax(0,1fr)}#books-count{grid-column:1/-1;justify-self:start}.books-library-heading{align-items:center}}

.books-library-block{margin-top:2rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.12)}


/* Read-only ebook catalog cover layout */
.book-library-item{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;gap:.85rem}
.book-library-cover-wrap{position:relative;width:88px;aspect-ratio:2/3;overflow:hidden;border-radius:5px;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center}
.book-library-cover{display:block;width:100%;height:100%;object-fit:contain}
.book-library-cover-placeholder{font-size:.72rem;color:#888;text-align:center;padding:.3rem}
.book-library-details{min-width:0;display:flex;flex-direction:column;gap:.5rem}
.book-library-details h3{margin:0}
.book-library-author{font-size:.85rem;color:var(--text-muted,#aaa);overflow-wrap:anywhere}
.books-review-filter{display:flex;align-items:center;gap:.5rem;margin-top:.35rem;color:#d4d4d4;font-size:.82rem;cursor:pointer}
.books-review-filter input{width:16px;height:16px;margin:0;accent-color:#48dbfb}
.book-metadata-status{font-size:.72rem;color:#9ee7b1;overflow-wrap:anywhere}
.book-metadata-status.needs-review{color:#ffd28a;font-weight:600}


/* Expandable author groups in the live library */
.book-author-group{grid-column:1/-1;min-width:0;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(255,255,255,.025);overflow:hidden}
.book-author-group>summary{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.85rem 1rem;cursor:pointer;list-style:none}
.book-author-group>summary::-webkit-details-marker{display:none}
.book-author-group>summary::after{content:"+";font-size:1.1rem;color:#9edff0;margin-left:.4rem}
.book-author-group[open]>summary::after{content:"−"}
.book-author-name{font-weight:600;overflow-wrap:anywhere}
.book-author-count{margin-left:auto;color:#999;font-size:.8rem;white-space:nowrap}
.book-author-books{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;padding:0 .7rem .7rem}
.book-series-group{margin:.5rem .55rem 0;border:1px solid rgba(72,219,251,.28);border-left:3px solid rgba(72,219,251,.65);border-radius:8px;background:rgba(72,219,251,.045);overflow:hidden}
.book-series-group>summary{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.7rem .8rem;cursor:pointer;list-style:none}
.book-series-group>summary::-webkit-details-marker{display:none}
.book-series-group>summary::after{content:"+";font-size:1rem;color:#9edff0;margin-left:.3rem}
.book-series-group[open]{border-color:rgba(72,219,251,.48);border-left-color:#48dbfb;background:rgba(72,219,251,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.book-series-group[open]>summary{background:rgba(72,219,251,.09);border-bottom:1px solid rgba(72,219,251,.2)}
.book-series-group[open]>summary::after{content:"−"}
.book-series-name{font-weight:650;overflow-wrap:anywhere;color:#d8f7ff}
.book-series-books{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;padding:.7rem .65rem .65rem}
@media(max-width:600px){.book-author-books,.book-series-books{grid-template-columns:1fr}}


/* Per-browser Read marker overlaid at the top-left of each cover */
.book-library-cover-wrap .book-reading-toggle{position:absolute;top:.3rem;left:.3rem;z-index:2;display:flex;align-items:center;gap:.3rem;padding:.25rem .4rem;border:1px solid rgba(255,255,255,.28);border-radius:6px;background:rgba(12,12,20,.86);color:#fff;font-size:.7rem;line-height:1.2;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.book-reading-toggle input{width:14px;height:14px;margin:0;accent-color:#48dbfb;flex:0 0 auto}
.book-reading-toggle input:focus-visible{outline:2px solid #48dbfb;outline-offset:2px}


/* Books catalog discovery controls */
#books-sort,#books-view{width:100%;min-width:0;padding:.6rem .65rem;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(0,0,0,.2);color:#eee;font:inherit}
#books-sort option,#books-view option{background:#24243e;color:#eee}
.books-display-row{grid-template-columns:auto minmax(100px,1fr) auto minmax(90px,.7fr)}
.books-display-row label{font-size:.8rem;color:#aaa}
.books-results.list-view,.books-results.list-view .book-author-books,.books-results.list-view .book-series-books{grid-template-columns:1fr}
.books-results.list-view .book-library-item{grid-template-columns:64px minmax(0,1fr);padding:.65rem;gap:.7rem}
.books-results.list-view .book-library-cover-wrap{width:64px}
@media(max-width:600px){.books-display-row{grid-template-columns:auto minmax(0,1fr)}.books-display-row .books-view-label{grid-column:1}.books-results.list-view .book-library-item{grid-template-columns:56px minmax(0,1fr)}.books-results.list-view .book-library-cover-wrap{width:56px}}

.books-review-help{margin:.25rem 0 0;color:#999;font-size:.78rem;line-height:1.45}
.tool-note{margin-top:.7rem;color:#9292a7;font-size:.82rem;line-height:1.45}
#timestamp-result p{overflow-wrap:anywhere;margin:.2rem 0}
#regex-result p{white-space:pre-wrap;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.88rem}
#cron-result code{display:block;font-size:1.1rem;overflow-wrap:anywhere;user-select:all}

/* Compact, aggregated library scan diagnostics; contains no per-file paths. */
.books-diagnostics{margin:.35rem 0 .75rem;color:var(--muted,#a8a8b8);font-size:.82rem;line-height:1.5;overflow-wrap:anywhere}
.books-diagnostics p{margin:.2rem 0}
