/* ============= LOCKED PALETTE ============= */ :root { --sky: url("img/wallpaper.png") center / cover no-repeat, linear-gradient(180deg, oklch(78% 0.10 215) 0%, oklch(88% 0.14 145) 100%); --sun: radial-gradient(circle, oklch(99% 0.02 215) 0%, oklch(94% 0.05 215 / 0) 60%); --icon-blue: linear-gradient(135deg, oklch(92% 0.06 215), oklch(72% 0.13 220) 60%, oklch(48% 0.13 230)); --icon-orange: linear-gradient(135deg, oklch(94% 0.10 145), oklch(78% 0.18 145) 55%, oklch(52% 0.16 150)); --icon-green: linear-gradient(135deg, oklch(94% 0.12 130), oklch(76% 0.18 140) 55%, oklch(50% 0.16 150)); --icon-pink: linear-gradient(135deg, oklch(88% 0.08 195), oklch(68% 0.13 200) 60%, oklch(45% 0.13 210)); --icon-silver: linear-gradient(135deg, oklch(98% 0.005 220), oklch(85% 0.015 220) 60%, oklch(62% 0.03 225)); --title-bar: linear-gradient(to bottom, oklch(94% 0.05 195), oklch(78% 0.10 200) 50%, oklch(60% 0.12 215)); --start-btn: linear-gradient(to bottom, oklch(94% 0.10 145) 0%, oklch(75% 0.18 145) 48%, oklch(50% 0.16 150) 52%, oklch(68% 0.18 145) 100%); --start-border: oklch(40% 0.14 150); } .desk { position: fixed; inset: 0; overflow: hidden; background: var(--sky); background-size: cover; background-position: center; } .icons { position: absolute; left: 24px; top: 24px; display: grid; grid-template-columns: 1fr; gap: 18px; z-index: 10; } .icon { display: flex; flex-direction: column; align-items: center; gap: 4px; width: 80px; cursor: pointer; text-align: center; } .icon .glyph { width: 56px; height: 56px; border-radius: 14px; background: linear-gradient(135deg, oklch(88% 0.10 220), oklch(70% 0.14 230) 60%, oklch(50% 0.13 240)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -3px 6px rgba(40,80,140,0.4), 0 4px 14px rgba(40,80,140,0.35); display: flex; align-items: center; justify-content: center; font-size: 26px; color: white; text-shadow: 0 1px 2px rgba(0,0,0,0.4); position: relative; } .icon .glyph::before { content: ""; position: absolute; left: 4px; right: 4px; top: 3px; height: 40%; border-radius: 12px; background: linear-gradient(to bottom, rgba(255,255,255,0.75), transparent); } .icon .glyph.orange { background: linear-gradient(135deg, oklch(92% 0.08 70), oklch(75% 0.16 55) 60%, oklch(55% 0.15 35)); } .icon .glyph.green { background: linear-gradient(135deg, oklch(90% 0.10 145), oklch(75% 0.15 145) 60%, oklch(50% 0.13 155)); } .icon .glyph.pink { background: linear-gradient(135deg, oklch(90% 0.10 350), oklch(75% 0.16 350) 60%, oklch(55% 0.16 340)); } .icon .glyph.silver { background: linear-gradient(135deg, oklch(95% 0.01 240), oklch(78% 0.03 240) 60%, oklch(55% 0.04 240)); } .icon .label { font-size: 12px; color: white; text-shadow: 0 1px 3px rgba(0,0,0,0.6); font-weight: 500; } .icon:hover .glyph { transform: translateY(-2px) scale(1.04); transition: transform 200ms; } .win { position: absolute; min-width: 320px; z-index: 50; } /* When a window has been resized, it switches to a flex column so the body becomes a scroll region — keeps content from getting clipped */ .win.resized { display: flex; flex-direction: column; overflow: hidden; border-radius: 18px; } .win.resized .body { flex: 1; min-height: 0; overflow-y: auto; border-radius: 0 0 18px 18px; } /* The browser window is already a flex column internally; let it fill */ .win.resized > .browser { flex: 1; min-height: 0; } /* RESIZE HANDLES */ .rs { position: absolute; z-index: 5; } .rs-e { right: -3px; top: 14px; bottom: 18px; width: 8px; cursor: ew-resize; } .rs-s { left: 14px; right: 18px; bottom: -3px; height: 8px; cursor: ns-resize; } .rs-se { right: 0; bottom: 0; width: 22px; height: 22px; cursor: nwse-resize; background-image: linear-gradient(135deg, transparent 0 38%, rgba(40,80,140,0.85) 38% 48%, transparent 48% 60%, rgba(40,80,140,0.75) 60% 70%, transparent 70%, rgba(40,80,140,0.6) 82% 92%, transparent 92%); border-radius: 0 0 18px 0; opacity: 0.65; transition: opacity 150ms, filter 150ms; } .rs-se:hover { opacity: 1; filter: drop-shadow(0 0 4px rgba(120,170,220,0.8)); } body.rs-cursor-e, body.rs-cursor-e * { cursor: ew-resize !important; } body.rs-cursor-s, body.rs-cursor-s * { cursor: ns-resize !important; } body.rs-cursor-se, body.rs-cursor-se * { cursor: nwse-resize !important; } .win .titlebar { height: 32px; padding: 0 12px; display: flex; align-items: center; gap: 8px; border-radius: 18px 18px 0 0; background: var(--title-bar); color: var(--title-fg, white); font-size: 13px; font-weight: 600; text-shadow: 0 1px 2px var(--title-shadow, rgba(0,0,0,0.3)); cursor: grab; user-select: none; border-bottom: 1px solid rgba(0,0,0,0.15); } .win .titlebar .dots { display: flex; gap: 6px; margin-right: 8px; } .win .titlebar .dot { width: 13px; height: 13px; border-radius: 50%; border: 1px solid rgba(0,0,0,0.35); cursor: pointer; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7); } .win .titlebar .dot.r { background: radial-gradient(circle at 35% 30%, oklch(85% 0.18 30), oklch(55% 0.18 30)); } .win .titlebar .dot.y { background: radial-gradient(circle at 35% 30%, oklch(95% 0.15 95), oklch(70% 0.18 80)); } .win .titlebar .dot.g { background: radial-gradient(circle at 35% 30%, oklch(90% 0.18 145), oklch(60% 0.18 150)); } .win .body { padding: 16px; font-size: 13px; line-height: 1.55; color: oklch(22% 0.04 240); border-radius: 0 0 18px 18px; } .taskbar { position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%); height: 56px; padding: 0 12px; display: flex; align-items: center; gap: 10px; border-radius: 28px; background: linear-gradient(to bottom, rgba(255,255,255,0.55), rgba(180,210,240,0.45)); backdrop-filter: blur(20px) saturate(180%); border: 1px solid rgba(255,255,255,0.85); box-shadow: inset 0 1px 0 rgba(255,255,255,0.95), 0 12px 36px rgba(40,80,140,0.3); z-index: 200; } .taskbar .start { height: 40px; padding: 0 18px 0 14px; display: inline-flex; align-items: center; gap: 8px; border-radius: 20px; background: var(--start-btn); color: white; text-shadow: 0 1px 2px rgba(0,0,0,0.4); font-weight: 700; font-size: 13px; border: 1px solid var(--start-border); cursor: pointer; box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 3px 10px rgba(180,90,40,0.3); } .taskbar .sep { width: 1px; height: 32px; background: linear-gradient(to bottom, transparent, rgba(60,100,160,0.4), transparent); } .tray { display: inline-flex; align-items: center; gap: 8px; padding: 0 12px; font-size: 12px; color: oklch(25% 0.05 240); } .clock { font-family: "Segoe UI", Tahoma; font-weight: 600; } /* SYSTEM-TRAY ALERT (keep android open) */ .tray-alert { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 12px; cursor: pointer; background: linear-gradient(to bottom, rgba(255,255,255,0.55), rgba(255,220,180,0.35)); border: 1px solid rgba(220,140,60,0.45); box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 1px 3px rgba(180,90,30,0.18); transition: transform 160ms, box-shadow 160ms; } .tray-alert:hover { transform: translateY(-1px); box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 3px 8px rgba(180,90,30,0.3); } .tra-led { width: 8px; height: 8px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, oklch(96% 0.16 60), oklch(62% 0.20 45)); box-shadow: 0 0 6px oklch(70% 0.20 50 / 0.9); animation: tra-pulse 1.8s ease-in-out infinite; } @keyframes tra-pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.55; transform: scale(0.78); } } .tra-label { font-size: 11px; font-weight: 600; letter-spacing: 0.4px; color: oklch(38% 0.12 50); text-transform: uppercase; } .tra-count { font-family: 'IBM Plex Mono', monospace; font-size: 11px; font-weight: 600; color: oklch(30% 0.10 45); } body[data-theme="chrome"] .tray-alert { background: linear-gradient(to bottom, oklch(30% 0.04 280), oklch(20% 0.05 290)) !important; border-color: oklch(60% 0.20 50) !important; box-shadow: inset 0 1px 0 oklch(50% 0.10 280), 0 0 12px oklch(60% 0.20 45 / 0.4) !important; } body[data-theme="chrome"] .tra-label { color: oklch(85% 0.14 60) !important; } body[data-theme="chrome"] .tra-count { color: oklch(92% 0.06 60) !important; } /* SYSTEM ALERT WINDOW */ .win.koa-alert { z-index: 300; } .koa-title { background: linear-gradient(to bottom, oklch(72% 0.14 35), oklch(55% 0.18 30) 50%, oklch(42% 0.16 28)) !important; color: oklch(99% 0 0) !important; text-shadow: 0 1px 2px oklch(20% 0.10 30 / 0.7) !important; } .koa-body { padding: 14px 16px 16px !important; } .koa-hero { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; } .koa-bot { width: 48px; height: 48px; flex-shrink: 0; border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 28px; background: linear-gradient(135deg, oklch(90% 0.14 145), oklch(65% 0.20 145)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.8), 0 3px 10px oklch(55% 0.18 145 / 0.4); animation: koa-bot-bob 3.4s ease-in-out infinite; } @keyframes koa-bot-bob { 50% { transform: translateY(-3px) rotate(-4deg); } } .koa-eyebrow { font-size: 10px; font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase; color: oklch(48% 0.18 35); margin-bottom: 3px; } .koa-headline { font-size: 17px; font-weight: 700; line-height: 1.2; color: oklch(22% 0.06 240); letter-spacing: -0.2px; } .koa-copy { margin: 0 0 12px; font-size: 12.5px; line-height: 1.55; color: oklch(25% 0.04 240); } .koa-countdown { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 14px; } .koa-cd-cell { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 9px 4px 7px; border-radius: 10px; background: linear-gradient(to bottom, rgba(255,255,255,0.6), rgba(220,232,245,0.4)); border: 1px solid rgba(120,160,200,0.5); box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 1px 2px rgba(40,80,140,0.08); } .koa-cd-n { font-family: 'IBM Plex Mono', monospace; font-size: 19px; font-weight: 600; color: oklch(35% 0.14 35); line-height: 1; } .koa-cd-l { font-size: 9px; letter-spacing: 1.2px; text-transform: uppercase; color: oklch(40% 0.04 240); font-weight: 600; } .koa-actions { display: flex; justify-content: space-between; align-items: center; gap: 10px; } .koa-dismiss { background: transparent; border: 0; cursor: pointer; font-size: 11px; color: oklch(40% 0.03 240); text-decoration: underline; font-family: inherit; } .koa-dismiss:hover { color: oklch(22% 0.06 240); } body[data-theme="chrome"] .koa-title { background: linear-gradient(180deg, oklch(58% 0.20 30) 0%, oklch(42% 0.20 28) 45%, oklch(28% 0.16 25) 52%, oklch(40% 0.20 28) 60%, oklch(52% 0.20 30) 100%) !important; color: oklch(99% 0.02 60) !important; text-shadow: 0 1px 0 oklch(18% 0.10 25 / 0.85), 0 0 6px oklch(80% 0.18 50 / 0.4) !important; border-bottom: 1px solid oklch(20% 0.10 25) !important; } body[data-theme="chrome"] .koa-headline { color: oklch(18% 0.06 240) !important; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } body[data-theme="chrome"] .koa-copy { color: oklch(22% 0.03 240) !important; } body[data-theme="chrome"] .koa-eyebrow { color: oklch(48% 0.20 35) !important; } body[data-theme="chrome"] .koa-cd-cell { background: linear-gradient(to bottom, oklch(18% 0.03 250), oklch(10% 0.03 250)) !important; border: 1px solid oklch(35% 0.06 250) !important; box-shadow: inset 0 1px 0 oklch(40% 0.06 250 / 0.5), 0 1px 3px rgba(0,0,0,0.4) !important; } body[data-theme="chrome"] .koa-cd-n { color: oklch(92% 0.16 60) !important; text-shadow: 0 0 8px oklch(70% 0.20 50 / 0.7); } body[data-theme="chrome"] .koa-cd-l { color: oklch(70% 0.04 240) !important; } body[data-theme="chrome"] .koa-dismiss { color: oklch(35% 0.04 240) !important; } body[data-theme="chrome"] .koa-dismiss:hover { color: oklch(18% 0.06 240) !important; } /* SERVER ROW */ .srv-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dotted oklch(72% 0.05 220); font-size: 12px; } .srv-row:last-child { border-bottom: 0; } .srv-led { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7); animation: led-pulse 2.2s ease-in-out infinite; } .srv-led.ok { background: radial-gradient(circle at 30% 30%, oklch(96% 0.18 145), oklch(60% 0.18 150)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 0 8px oklch(70% 0.18 145 / 0.7); } .srv-led.warn { background: radial-gradient(circle at 30% 30%, oklch(95% 0.16 85), oklch(70% 0.18 75)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 0 8px oklch(70% 0.18 80 / 0.6); } @keyframes led-pulse { 50% { opacity: 0.55; } } .srv-host { font-family: 'Courier New', monospace; flex: 1; color: oklch(25% 0.05 230); } .srv-meta { font-size: 10px; opacity: 0.7; } /* FILM DIARY ROW */ .film-row { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px dotted oklch(72% 0.05 220); } .film-row:last-child { border-bottom: 0; } .film-poster { width: 38px; height: 56px; border-radius: 4px; flex-shrink: 0; box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), 0 2px 6px rgba(40,80,140,0.2); } .film-meta { flex: 1; min-width: 0; font-size: 12px; line-height: 1.45; } .film-title { font-weight: 700; color: oklch(25% 0.06 230); font-size: 13px; } .film-year { font-weight: 400; opacity: 0.6; font-size: 11px; margin-left: 3px; } .film-rating { font-size: 11px; margin: 1px 0 2px; } .film-rating .star { color: oklch(80% 0.04 230); } .film-rating .star.on { color: oklch(72% 0.16 60); text-shadow: 0 0 4px oklch(80% 0.18 70 / 0.5); } .film-rating .star.half { background: linear-gradient(90deg, oklch(72% 0.16 60) 50%, oklch(80% 0.04 230) 50%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .film-note { font-size: 11px; opacity: 0.75; font-style: italic; } /* ============= FAUX BROWSER ============= */ .browser { display: flex; flex-direction: column; height: 100%; } .browser .titlebar { border-bottom: 1px solid rgba(0,0,0,0.18); } .browser-toolbar { display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: linear-gradient(to bottom, oklch(96% 0.005 220), oklch(86% 0.015 225) 50%, oklch(78% 0.025 230)); border-bottom: 1px solid oklch(60% 0.04 230); box-shadow: inset 0 -1px 0 rgba(255,255,255,0.5); } .nav-btn { width: 28px; height: 24px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(to bottom, oklch(99% 0.005 220), oklch(88% 0.015 225) 50%, oklch(74% 0.03 230)); border: 1px solid oklch(55% 0.05 230); color: oklch(35% 0.05 235); font-size: 13px; line-height: 1; cursor: pointer; box-shadow: inset 0 1px 0 rgba(255,255,255,0.95), 0 1px 2px rgba(40,80,140,0.25); transition: transform 100ms, box-shadow 100ms; } .nav-btn:hover { transform: translateY(-0.5px); } .nav-btn:active { transform: translateY(0.5px); box-shadow: inset 0 1px 3px rgba(40,80,140,0.4); } .nav-btn[disabled] { opacity: 0.35; cursor: default; transform: none !important; } .nav-btn.refresh.spinning svg { animation: spin 700ms linear; } @keyframes spin { to { transform: rotate(360deg); } } .url-bar { flex: 1; height: 26px; display: flex; align-items: center; gap: 6px; padding: 0 10px; background: linear-gradient(to bottom, oklch(99% 0.003 220), oklch(94% 0.008 220)); border: 1px solid oklch(60% 0.04 230); border-radius: 13px; box-shadow: inset 0 1px 2px rgba(40,80,140,0.18); font: 12px "IBM Plex Mono", "Courier New", monospace; color: oklch(28% 0.05 235); overflow: hidden; min-width: 0; } .url-bar .lock { font-size: 10px; color: oklch(58% 0.16 145); flex-shrink: 0; } .url-bar .url-scheme { opacity: 0.55; } .url-bar .url-host { color: oklch(30% 0.08 240); font-weight: 600; } .url-bar .url-path { opacity: 0.85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .url-bar .caret { width: 1px; height: 14px; background: oklch(40% 0.08 240); animation: blink 1s steps(2) infinite; } @keyframes blink { 50% { opacity: 0; } } .browser-bookmarks { display: flex; align-items: center; gap: 2px; padding: 4px 10px; background: linear-gradient(to bottom, oklch(94% 0.01 220), oklch(86% 0.02 225)); border-bottom: 1px solid oklch(62% 0.04 230); font-size: 11px; overflow-x: auto; scrollbar-width: none; } .browser-bookmarks::-webkit-scrollbar { display: none; } .bm { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 8px; color: oklch(28% 0.06 235); white-space: nowrap; cursor: pointer; border: 1px solid transparent; transition: background 120ms, border-color 120ms; } .bm:hover { background: rgba(255,255,255,0.6); border-color: rgba(255,255,255,0.95); } .bm.active { background: linear-gradient(to bottom, rgba(255,255,255,0.7), rgba(200,230,255,0.4)); border-color: rgba(120,170,220,0.5); } .bm .favicon { width: 12px; height: 12px; border-radius: 3px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.6); } .bm.home .favicon { background: linear-gradient(135deg, oklch(85% 0.10 220), oklch(55% 0.14 235)); } .browser-page { flex: 1; min-height: 0; overflow-y: auto; background: oklch(98% 0.004 220); color: oklch(20% 0.03 240); font: 14px "Georgia", "Times New Roman", serif; line-height: 1.65; padding: 0; position: relative; } .browser-page::-webkit-scrollbar { width: 12px; } .browser-page::-webkit-scrollbar-track { background: linear-gradient(to right, oklch(92% 0.01 220), oklch(96% 0.005 220)); } .browser-page::-webkit-scrollbar-thumb { background: linear-gradient(to right, oklch(82% 0.03 225), oklch(70% 0.05 230)); border-radius: 6px; border: 2px solid oklch(94% 0.008 220); } .browser-status { height: 22px; padding: 0 12px; display: flex; align-items: center; justify-content: space-between; background: linear-gradient(to bottom, oklch(90% 0.01 220), oklch(80% 0.02 225)); border-top: 1px solid oklch(60% 0.04 230); font: 11px "Segoe UI", Tahoma, sans-serif; color: oklch(35% 0.05 235); border-radius: 0 0 18px 18px; } .browser-status .progress { flex: 1; max-width: 80px; height: 8px; margin: 0 8px; background: oklch(82% 0.02 225); border-radius: 4px; border: 1px solid oklch(65% 0.04 230); overflow: hidden; box-shadow: inset 0 1px 2px rgba(40,80,140,0.15); } .browser-status .progress-bar { height: 100%; width: 100%; background: linear-gradient(to bottom, oklch(82% 0.13 220), oklch(58% 0.14 235)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.65); } /* index page */ .idx-hero { padding: 32px 40px 24px; background: radial-gradient(60% 80% at 100% 0%, oklch(88% 0.10 215 / 0.5) 0%, transparent 60%), linear-gradient(to bottom, oklch(94% 0.03 220), oklch(98% 0.004 220)); border-bottom: 1px solid oklch(88% 0.02 220); } .idx-eyebrow { font: 500 10px "IBM Plex Mono", monospace; letter-spacing: 2px; text-transform: uppercase; color: oklch(45% 0.10 230); margin-bottom: 8px; } .idx-title { font: 700 38px/1.05 "Georgia", "Times New Roman", serif; color: oklch(22% 0.06 235); letter-spacing: -1px; margin: 0 0 10px; } .idx-title em { font-style: italic; font-weight: 400; color: oklch(45% 0.12 220); } .idx-sub { font: italic 14px/1.5 "Georgia", serif; color: oklch(40% 0.04 235); max-width: 440px; margin: 0; } .idx-list { padding: 16px 40px 40px; } .idx-art { display: grid; grid-template-columns: 60px 1fr auto; gap: 18px; padding: 18px 0; border-bottom: 1px solid oklch(90% 0.015 220); cursor: pointer; transition: padding 120ms; } .idx-art:last-child { border-bottom: 0; } .idx-art:hover { padding-left: 6px; } .idx-art:hover .idx-art-title { color: oklch(40% 0.16 230); text-decoration: underline; text-decoration-color: oklch(70% 0.13 220 / 0.5); text-underline-offset: 3px; } .idx-art-num { font: 600 28px/1 "IBM Plex Mono", monospace; color: oklch(80% 0.04 225); padding-top: 4px; } .idx-art-title { font: 700 18px/1.25 "Georgia", serif; color: oklch(22% 0.06 235); margin: 0 0 4px; letter-spacing: -0.2px; } .idx-art-excerpt { font: 13px/1.55 "Georgia", serif; color: oklch(40% 0.04 235); margin: 4px 0 0; } .idx-art-meta { font: 11px "IBM Plex Mono", monospace; color: oklch(55% 0.06 230); text-align: right; padding-top: 4px; line-height: 1.6; white-space: nowrap; } .idx-art-tag { display: inline-block; padding: 1px 6px; border-radius: 3px; background: oklch(92% 0.04 220); color: oklch(40% 0.10 230); font-size: 10px; text-transform: lowercase; letter-spacing: 0.5px; } /* article page */ .art-page { padding: 36px 56px 60px; max-width: 620px; margin: 0 auto; } .art-back { display: inline-flex; align-items: center; gap: 6px; font: 500 11px "IBM Plex Mono", monospace; color: oklch(45% 0.10 230); text-decoration: none; margin-bottom: 24px; cursor: pointer; letter-spacing: 1px; text-transform: uppercase; } .art-back:hover { color: oklch(35% 0.16 230); } .art-eyebrow { font: 500 10px "IBM Plex Mono", monospace; letter-spacing: 2px; text-transform: uppercase; color: oklch(55% 0.10 220); margin-bottom: 12px; } .art-title { font: 700 32px/1.15 "Georgia", "Times New Roman", serif; color: oklch(20% 0.06 235); letter-spacing: -0.6px; margin: 0 0 14px; } .art-byline { font: italic 13px/1.5 "Georgia", serif; color: oklch(48% 0.04 235); margin: 0 0 32px; padding-bottom: 16px; border-bottom: 1px solid oklch(88% 0.015 220); } .art-body { font-size: 15px; line-height: 1.75; color: oklch(22% 0.03 240); } .art-body p { margin: 0 0 18px; text-wrap: pretty; } .art-body p:first-of-type::first-letter { font-size: 56px; font-weight: 700; float: left; line-height: 0.9; padding: 4px 8px 0 0; color: oklch(40% 0.14 220); font-family: "Georgia", serif; } .art-body em { color: oklch(35% 0.10 230); } .art-body a, .art-body .ilink { color: oklch(40% 0.16 230); text-decoration: underline; text-decoration-color: oklch(70% 0.13 220 / 0.4); text-underline-offset: 2px; cursor: pointer; } .art-body h2 { font: 700 18px "Georgia", serif; color: oklch(22% 0.06 235); margin: 32px 0 12px; letter-spacing: -0.2px; } .art-body blockquote { margin: 24px 0; padding: 0 0 0 18px; border-left: 3px solid oklch(78% 0.10 220); font-style: italic; color: oklch(38% 0.06 230); } .art-body code { font: 13px "IBM Plex Mono", monospace; background: oklch(94% 0.01 220); padding: 1px 5px; border-radius: 3px; color: oklch(35% 0.10 230); } .art-foot { margin-top: 40px; padding-top: 20px; border-top: 1px solid oklch(88% 0.015 220); font: 12px "IBM Plex Mono", monospace; color: oklch(55% 0.06 230); display: flex; justify-content: space-between; align-items: center; } .art-foot .more { color: oklch(40% 0.16 230); cursor: pointer; } /* music toggle button — on-state gradient (off-state is set inline by Aero.musicToggleHTML) */ .mt-btn.on { background: radial-gradient(circle at 30% 25%, white, oklch(75% 0.14 55) 60%, oklch(55% 0.15 35)) !important; } /* film row trailing date */ .film-when { opacity: 0.6; margin-left: 8px; } /* films stats numerals */ #films-stats strong { color: oklch(28% 0.08 230); font-size: 13px; } /* podcast episode rows */ .pod-ep { display: flex; justify-content: space-between; gap: 8px; } .pod-ep a { color: inherit; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pod-dur { opacity: 0.6; flex-shrink: 0; } /* "now playing" recent list */ .np-recent-label { margin-top: 14px; font-size: 11px; opacity: 0.75; text-transform: uppercase; letter-spacing: 1px; } #np-recent { margin-top: 6px; display: flex; flex-direction: column; gap: 6px; font-size: 12px; } .np-row { display: flex; justify-content: space-between; } .np-ago { opacity: 0.6; } /* generic empty/loading message used in fetched lists */ .empty-msg { opacity: 0.5; font-style: italic; }