diff --git a/style.css b/style.css index 6463985..4aa4e90 100644 --- a/style.css +++ b/style.css @@ -9,17 +9,744 @@ License: GNU General Public License v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html */ -@font-face{font-family:'Alpha Lyrae';src:url('fonts/AlphaLyrae-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap} -@font-face{font-family:'Crimson Pro';src:url('fonts/crimson-pro-latin-wght-normal.woff2') format('woff2');font-weight:200 900;font-style:normal;font-display:swap} -@font-face{font-family:'Crimson Pro';src:url('fonts/crimson-pro-latin-wght-italic.woff2') format('woff2');font-weight:200 900;font-style:italic;font-display:swap} -@font-face{font-family:'Berkeley Mono';src:url('fonts/BerkeleyMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap} -@font-face{font-family:'Berkeley Mono';src:url('fonts/BerkeleyMono-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap} +@font-face { + font-family: "Alpha Lyrae"; + src: url("fonts/AlphaLyrae-Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Crimson Pro"; + src: url("fonts/crimson-pro-latin-wght-normal.woff2") format("woff2"); + font-weight: 200 900; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Crimson Pro"; + src: url("fonts/crimson-pro-latin-wght-italic.woff2") format("woff2"); + font-weight: 200 900; + font-style: italic; + font-display: swap; +} +@font-face { + font-family: "Berkeley Mono"; + src: url("fonts/BerkeleyMono-Regular.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Berkeley Mono"; + src: url("fonts/BerkeleyMono-Bold.woff2") format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} -:root{color-scheme:light;--bg:#f8f5f0;--surface:#fffdf9;--text:#1d1b19;--muted:#706a63;--line:#d8d0c6;--accent:#c3480b;--accent-hover:#8f3508;--code-bg:#282623;--code-text:#f5eee5;--shadow:0 10px 30px rgba(45,34,25,.08);--content:760px;--wide:1180px} -:root[data-theme='dark']{color-scheme:dark;--bg:#171615;--surface:#22201e;--text:#eee8e1;--muted:#b9afa5;--line:#4a4540;--accent:#f07a3c;--accent-hover:#ff9d6a;--code-bg:#0e0e0d;--code-text:#f5eee5;--shadow:0 10px 30px rgba(0,0,0,.25)} -*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:'Crimson Pro',Georgia,serif;font-size:clamp(1.2rem,1.05rem + .5vw,1.45rem);font-weight:400;line-height:1.55}a{color:var(--accent);text-decoration-thickness:.08em;text-underline-offset:.14em}a:hover,a:focus{color:var(--accent-hover)}img{display:block;max-width:100%;height:auto}button,input,textarea,select{font:inherit}button{cursor:pointer}.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.screen-reader-text:focus{z-index:100000;top:5px;left:5px;width:auto;height:auto;padding:.5rem 1rem;margin:0;overflow:visible;clip:auto;background:var(--surface);color:var(--text);box-shadow:var(--shadow)} -.site-header{position:sticky;z-index:20;top:0;background:color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(12px);transition:transform .25s ease}.site-header.is-hidden{transform:translateY(-105%)}.header-inner{display:flex;align-items:center;gap:1.25rem;max-width:var(--wide);min-height:4.6rem;padding:.75rem 1.5rem;margin:auto}.site-branding{flex:1;min-width:0}.custom-logo-link{display:inline-flex;max-height:42px}.custom-logo{width:auto;max-height:42px}.site-title{display:inline-block;margin:0;color:var(--text);font-family:'Alpha Lyrae',sans-serif;font-size:clamp(1.15rem,1rem + 1vw,1.7rem);font-weight:500;letter-spacing:.035em;text-decoration:none}.site-description{margin:.1rem 0 0;color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.64rem;letter-spacing:.07em}.primary-menu{display:flex;align-items:center;gap:1.3rem;margin:0;padding:0;list-style:none;font-family:'Berkeley Mono',monospace;font-size:.7rem;letter-spacing:.04em}.primary-menu a{color:var(--text);text-decoration:none}.primary-menu a:hover,.primary-menu .current-menu-item>a{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:.4rem}.icon-button{display:grid;place-items:center;width:2.2rem;height:2.2rem;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text)}.icon-button:hover,.icon-button:focus{background:var(--surface);color:var(--accent)}.icon{width:1.15rem;height:1.15rem;fill:none;stroke:currentColor;stroke-width:1.8}.search-panel{position:absolute;top:calc(100% + 1px);right:max(1rem,calc((100vw - var(--wide))/2));width:min(420px,calc(100vw - 2rem));padding:1rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);transform:translateY(-.5rem);opacity:0;visibility:hidden;transition:.18s}.search-panel.is-open{transform:none;opacity:1;visibility:visible}.search-form{display:flex;gap:.5rem}.search-field{flex:1;min-width:0;padding:.55rem .7rem;border:1px solid var(--line);border-radius:2px;background:var(--bg);color:var(--text)}.button,.search-submit,input[type=submit]{padding:.55rem .9rem;border:1px solid var(--accent);border-radius:2px;background:var(--accent);color:#fff;font-family:'Berkeley Mono',monospace;font-size:.68rem;letter-spacing:.04em}.menu-toggle{display:none} -.site-main{max-width:var(--content);padding:3.5rem 1.5rem 5rem;margin:auto}.page-header{max-width:var(--content);padding:3.5rem 1.5rem 0;margin:auto}.page-title,.entry-title,h1,h2,h3,h4{font-family:'Alpha Lyrae',sans-serif;font-weight:500;line-height:1.16;letter-spacing:.025em}.page-title{margin:0;font-size:clamp(2rem,1.35rem + 2.5vw,3.5rem)}.archive-description{color:var(--muted)}.post-card{padding:2.25rem 0;border-bottom:1px solid var(--line)}.post-card:first-child{padding-top:0}.entry-meta,.entry-footer,.taxonomy{color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem;letter-spacing:.035em}.entry-meta a,.entry-footer a{color:inherit}.entry-title{margin:.35rem 0 .8rem;font-size:clamp(1.75rem,1.3rem + 1.7vw,2.75rem)}.entry-title a{color:var(--text);text-decoration:none}.entry-title a:hover{color:var(--accent)}.entry-summary p{margin-bottom:0}.entry-thumbnail{margin:1.25rem 0}.entry-thumbnail img{width:100%;border-radius:2px}.post-categories,.tags-links{display:flex;flex-wrap:wrap;gap:.4rem;margin:.7rem 0}.post-categories a,.tags-links a{padding:.18rem .45rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);text-decoration:none}.post-categories a:hover,.tags-links a:hover{border-color:var(--accent);color:var(--accent)}.single .entry-header,.page .entry-header{margin-bottom:2rem}.single .entry-title,.page .entry-title{font-size:clamp(2.25rem,1.5rem + 3vw,4rem)}.entry-content{font-size:clamp(1.25rem,1.1rem + .4vw,1.5rem)}.entry-content>*{margin-top:0;margin-bottom:1.3em}.entry-content h2{margin-top:2em;font-size:1.55em}.entry-content h3{margin-top:1.8em;font-size:1.25em}.entry-content ul,.entry-content ol{padding-left:1.3em}.entry-content blockquote{padding:.35rem 1.25rem;border-left:4px solid var(--accent);margin-left:0;color:var(--muted);font-style:italic}.entry-content pre{padding:1rem 1.2rem;overflow:auto;border-radius:2px;background:var(--code-bg);color:var(--code-text);font-size:.78em}.entry-content code{font-family:'Berkeley Mono',monospace;font-size:.8em}.entry-content :not(pre)>code{padding:.1em .3em;border-radius:2px;background:var(--surface);border:1px solid var(--line)}.wp-block-image,.entry-content figure{margin-left:0;margin-right:0}.wp-caption-text{color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem}.wp-block-separator{border:0;border-top:1px solid var(--line)} -.hero{position:relative;display:grid;min-height:min(65vh,760px);overflow:hidden;background:#171615;color:#fff}.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero::after{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.74),rgba(0,0,0,.2));content:''}.hero-content{position:relative;z-index:1;align-self:end;max-width:var(--wide);width:100%;padding:clamp(4rem,13vw,10rem) 1.5rem 3.5rem;margin:auto}.hero-eyebrow{font-family:'Berkeley Mono',monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#f09b72}.hero-title{max-width:850px;margin:.45rem 0;font-family:'Alpha Lyrae',sans-serif;font-size:clamp(2.8rem,7vw,6rem);font-weight:500;line-height:.98}.hero-text{max-width:560px;margin:0;font-size:clamp(1.25rem,1.1rem + .5vw,1.6rem)}.hero+.site-main{padding-top:3rem}.pagination,.post-navigation{display:flex;justify-content:space-between;gap:1rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);font-family:'Berkeley Mono',monospace;font-size:.7rem}.pagination .nav-links{display:flex;gap:.8rem}.page-numbers{padding:.25rem}.page-numbers.current{color:var(--accent)}.comments-area{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--line)}.comment-list{padding:0;list-style:none}.comment-body{padding:1rem 0;border-bottom:1px solid var(--line)}.comment-meta{font-family:'Berkeley Mono',monospace;font-size:.7rem}.comment-form input:not([type=submit]),.comment-form textarea{width:100%;padding:.55rem;border:1px solid var(--line);background:var(--surface);color:var(--text)}.site-footer{padding:2.5rem 1.5rem;border-top:1px solid var(--line);color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem}.footer-inner{display:flex;justify-content:space-between;gap:1rem;max-width:var(--wide);margin:auto}.footer-menu{display:flex;gap:1rem;margin:0;padding:0;list-style:none}.footer-menu a{color:inherit}.not-found{text-align:center}.not-found .search-form{max-width:380px;margin:2rem auto} -@media(max-width:760px){.header-inner{min-height:4rem;padding:.55rem 1rem;flex-wrap:wrap}.menu-toggle{display:grid}.primary-navigation{order:4;width:100%;display:none}.site-header.menu-open .primary-navigation{display:block}.primary-menu{align-items:flex-start;flex-direction:column;gap:.9rem;padding:.8rem 0;border-top:1px solid var(--line)}.site-description{display:none}.site-main{padding:2.5rem 1rem 4rem}.page-header{padding:2.5rem 1rem 0}.hero-content{padding:6rem 1rem 2.5rem}.hero{min-height:55vh}.footer-inner{flex-direction:column}.entry-content{font-size:1.25rem}} -@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important}} +:root { + color-scheme: light; + --bg: #f8f5f0; + --surface: #fffdf9; + --text: #1d1b19; + --muted: #706a63; + --line: #d8d0c6; + --accent: #c3480b; + --accent-hover: #8f3508; + --code-bg: #282623; + --code-text: #f5eee5; + --shadow: 0 10px 30px rgba(45, 34, 25, 0.08); + --content: 760px; + --wide: 1180px; +} +:root[data-theme="dark"] { + color-scheme: dark; + --bg: #171615; + --surface: #22201e; + --text: #eee8e1; + --muted: #b9afa5; + --line: #4a4540; + --accent: #f07a3c; + --accent-hover: #ff9d6a; + --code-bg: #0e0e0d; + --code-text: #f5eee5; + --shadow: 0 10px 30px rgba(0, 0, 0, 0.25); +} +* { + box-sizing: border-box; +} +html { + scroll-behavior: smooth; +} +body { + margin: 0; + background: var(--bg); + color: var(--text); + font-family: "Crimson Pro", Georgia, serif; + font-size: clamp(1.2rem, 1.05rem + 0.5vw, 1.45rem); + font-weight: 400; + line-height: 1.55; +} +a { + color: var(--accent); + text-decoration-thickness: 0.08em; + text-underline-offset: 0.14em; +} +a:hover, +a:focus { + color: var(--accent-hover); +} +img { + display: block; + max-width: 100%; + height: auto; +} +button, +input, +textarea, +select { + font: inherit; +} +button { + cursor: pointer; +} +.screen-reader-text { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} +.screen-reader-text:focus { + z-index: 100000; + top: 5px; + left: 5px; + width: auto; + height: auto; + padding: 0.5rem 1rem; + margin: 0; + overflow: visible; + clip: auto; + background: var(--surface); + color: var(--text); + box-shadow: var(--shadow); +} +.site-header { + position: sticky; + z-index: 20; + top: 0; + background: color-mix(in srgb, var(--bg) 92%, transparent); + border-bottom: 1px solid var(--line); + backdrop-filter: blur(12px); + transition: transform 0.25s ease; +} +.site-header.is-hidden { + transform: translateY(-105%); +} +.header-inner { + display: flex; + align-items: center; + gap: 1.25rem; + max-width: var(--wide); + min-height: 4.6rem; + padding: 0.75rem 1.5rem; + margin: auto; +} +.site-branding { + flex: 1; + min-width: 0; +} +.custom-logo-link { + display: inline-flex; + max-height: 42px; +} +.custom-logo { + width: auto; + max-height: 42px; +} +.site-title { + display: inline-block; + margin: 0; + color: var(--text); + font-family: "Alpha Lyrae", sans-serif; + font-size: clamp(1.15rem, 1rem + 1vw, 1.7rem); + font-weight: 500; + letter-spacing: 0.035em; + text-decoration: none; +} +.site-description { + margin: 0.1rem 0 0; + color: var(--muted); + font-family: "Berkeley Mono", monospace; + font-size: 0.64rem; + letter-spacing: 0.07em; +} +.primary-menu { + display: flex; + align-items: center; + gap: 1.3rem; + margin: 0; + padding: 0; + list-style: none; + font-family: "Berkeley Mono", monospace; + font-size: 0.7rem; + letter-spacing: 0.04em; +} +.primary-menu a { + color: var(--text); + text-decoration: none; +} +.primary-menu a:hover, +.primary-menu .current-menu-item > a { + color: var(--accent); +} +.header-actions { + display: flex; + align-items: center; + gap: 0.4rem; +} +.icon-button { + display: grid; + place-items: center; + width: 2.2rem; + height: 2.2rem; + padding: 0; + border: 0; + border-radius: 50%; + background: transparent; + color: var(--text); +} +.icon-button:hover, +.icon-button:focus { + background: var(--surface); + color: var(--accent); +} +.icon { + width: 1.15rem; + height: 1.15rem; + fill: none; + stroke: currentColor; + stroke-width: 1.8; +} +.search-panel { + position: absolute; + top: calc(100% + 1px); + right: max(1rem, calc((100vw - var(--wide)) / 2)); + width: min(420px, calc(100vw - 2rem)); + padding: 1rem; + background: var(--surface); + border: 1px solid var(--line); + box-shadow: var(--shadow); + transform: translateY(-0.5rem); + opacity: 0; + visibility: hidden; + transition: 0.18s; +} +.search-panel.is-open { + transform: none; + opacity: 1; + visibility: visible; +} +.search-form { + display: flex; + gap: 0.5rem; +} +.search-field { + flex: 1; + min-width: 0; + padding: 0.55rem 0.7rem; + border: 1px solid var(--line); + border-radius: 2px; + background: var(--bg); + color: var(--text); +} +.button, +.search-submit, +input[type="submit"] { + padding: 0.55rem 0.9rem; + border: 1px solid var(--accent); + border-radius: 2px; + background: var(--accent); + color: #fff; + font-family: "Berkeley Mono", monospace; + font-size: 0.68rem; + letter-spacing: 0.04em; +} +.menu-toggle { + display: none; +} +.site-main { + max-width: var(--content); + padding: 3.5rem 1.5rem 5rem; + margin: auto; +} +.page-header { + max-width: var(--content); + padding: 3.5rem 1.5rem 0; + margin: auto; +} +.page-title, +.entry-title, +h1, +h2, +h3, +h4 { + font-family: "Alpha Lyrae", sans-serif; + font-weight: 500; + line-height: 1.16; + letter-spacing: 0.025em; +} +.page-title { + margin: 0; + font-size: clamp(2rem, 1.35rem + 2.5vw, 3.5rem); +} +.archive-description { + color: var(--muted); +} +.post-card { + padding: 2.25rem 0; + border-bottom: 1px solid var(--line); +} +.post-card:first-child { + padding-top: 0; +} +.entry-meta, +.entry-footer, +.taxonomy { + color: var(--muted); + font-family: "Berkeley Mono", monospace; + font-size: 0.68rem; + letter-spacing: 0.035em; +} +.entry-meta a, +.entry-footer a { + color: inherit; +} +.entry-title { + margin: 0.35rem 0 0.8rem; + font-size: clamp(1.75rem, 1.3rem + 1.7vw, 2.75rem); +} +.entry-title a { + color: var(--text); + text-decoration: none; +} +.entry-title a:hover { + color: var(--accent); +} +.entry-summary p { + margin-bottom: 0; +} +.entry-thumbnail { + margin: 1.25rem 0; +} +.entry-thumbnail img { + width: 100%; + border-radius: 2px; +} +.post-categories, +.tags-links { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; + margin: 0.7rem 0; +} +.post-categories a, +.tags-links a { + padding: 0.18rem 0.45rem; + border: 1px solid var(--line); + border-radius: 999px; + color: var(--muted); + text-decoration: none; +} +.post-categories a:hover, +.tags-links a:hover { + border-color: var(--accent); + color: var(--accent); +} +.single .entry-header, +.page .entry-header { + margin-bottom: 2rem; +} +.single .entry-title, +.page .entry-title { + font-size: clamp(2.25rem, 1.5rem + 3vw, 4rem); +} +.entry-content { + font-size: clamp(1.25rem, 1.1rem + 0.4vw, 1.5rem); +} +.entry-content > * { + margin-top: 0; + margin-bottom: 1.3em; +} +.entry-content h2 { + margin-top: 2em; + font-size: 1.55em; +} +.entry-content h3 { + margin-top: 1.8em; + font-size: 1.25em; +} +.entry-content ul, +.entry-content ol { + padding-left: 1.3em; +} +.entry-content blockquote { + padding: 0.35rem 1.25rem; + border-left: 4px solid var(--accent); + margin-left: 0; + color: var(--muted); + font-style: italic; +} +.entry-content pre { + padding: 1rem 1.2rem; + overflow: auto; + border-radius: 2px; + background: var(--code-bg); + color: var(--code-text); + font-size: 0.78em; +} +.entry-content code { + font-family: "Berkeley Mono", monospace; + font-size: 0.8em; +} +.entry-content :not(pre) > code { + padding: 0.1em 0.3em; + border-radius: 2px; + background: var(--surface); + border: 1px solid var(--line); +} +.wp-block-image, +.entry-content figure { + margin-left: 0; + margin-right: 0; +} +.wp-caption-text { + color: var(--muted); + font-family: "Berkeley Mono", monospace; + font-size: 0.68rem; +} +.wp-block-separator { + border: 0; + border-top: 1px solid var(--line); +} +.hero { + position: relative; + display: grid; + min-height: min(65vh, 760px); + overflow: hidden; + background: #171615; + color: #fff; +} +.hero-video { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: cover; +} +.hero::after { + position: absolute; + inset: 0; + background: linear-gradient(90deg, rgba(0, 0, 0, 0.74), rgba(0, 0, 0, 0.2)); + content: ""; +} +.hero-content { + position: relative; + z-index: 1; + align-self: end; + max-width: var(--wide); + width: 100%; + padding: clamp(4rem, 13vw, 10rem) 1.5rem 3.5rem; + margin: auto; +} +.hero-eyebrow { + font-family: "Berkeley Mono", monospace; + font-size: 0.72rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: #f09b72; +} +.hero-title { + max-width: 850px; + margin: 0.45rem 0; + font-family: "Alpha Lyrae", sans-serif; + font-size: clamp(2.8rem, 7vw, 6rem); + font-weight: 500; + line-height: 0.98; +} +.hero-text { + max-width: 560px; + margin: 0; + font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.6rem); +} +.hero + .site-main { + padding-top: 3rem; +} +.pagination, +.post-navigation { + display: flex; + justify-content: space-between; + gap: 1rem; + margin-top: 2.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--line); + font-family: "Berkeley Mono", monospace; + font-size: 0.7rem; +} +.pagination .nav-links { + display: flex; + gap: 0.8rem; +} +.page-numbers { + padding: 0.25rem; +} +.page-numbers.current { + color: var(--accent); +} +.comments-area { + margin-top: 4rem; + padding-top: 2rem; + border-top: 1px solid var(--line); +} +.comment-list { + padding: 0; + list-style: none; +} +.comment-body { + padding: 1rem 0; + border-bottom: 1px solid var(--line); +} +.comment-meta { + font-family: "Berkeley Mono", monospace; + font-size: 0.7rem; +} +.comment-form input:not([type="submit"]), +.comment-form textarea { + width: 100%; + padding: 0.55rem; + border: 1px solid var(--line); + background: var(--surface); + color: var(--text); +} +.site-footer { + padding: 2.5rem 1.5rem; + border-top: 1px solid var(--line); + color: var(--muted); + font-family: "Berkeley Mono", monospace; + font-size: 0.68rem; +} +.footer-inner { + display: flex; + justify-content: space-between; + gap: 1rem; + max-width: var(--wide); + margin: auto; +} +.footer-menu { + display: flex; + gap: 1rem; + margin: 0; + padding: 0; + list-style: none; +} +.footer-menu a { + color: inherit; +} +.not-found { + text-align: center; +} +.not-found .search-form { + max-width: 380px; + margin: 2rem auto; +} +@media (max-width: 760px) { + .header-inner { + min-height: 4rem; + padding: 0.55rem 1rem; + flex-wrap: wrap; + } + .menu-toggle { + display: grid; + } + .primary-navigation { + order: 4; + width: 100%; + display: none; + } + .site-header.menu-open .primary-navigation { + display: block; + } + .primary-menu { + align-items: flex-start; + flex-direction: column; + gap: 0.9rem; + padding: 0.8rem 0; + border-top: 1px solid var(--line); + } + .site-description { + display: none; + } + .site-main { + padding: 2.5rem 1rem 4rem; + } + .page-header { + padding: 2.5rem 1rem 0; + } + .hero-content { + padding: 6rem 1rem 2.5rem; + } + .hero { + min-height: 55vh; + } + .footer-inner { + flex-direction: column; + } + .entry-content { + font-size: 1.25rem; + } +} +.primary-menu > li { + position: relative; +} +.primary-menu .sub-menu { + position: absolute; + z-index: 30; + top: calc(100% + 0.8rem); + left: -0.9rem; + display: block; + min-width: 13rem; + padding: 0.6rem; + margin: 0; + list-style: none; + background: var(--surface); + border: 1px solid var(--line); + box-shadow: var(--shadow); + opacity: 0; + visibility: hidden; + transform: translateY(-0.4rem); + transition: + opacity 0.16s ease, + transform 0.16s ease, + visibility 0.16s; +} +.primary-menu > li:hover > .sub-menu, +.primary-menu > li:focus-within > .sub-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); +} +.primary-menu .sub-menu li + li { + margin-top: 0.15rem; +} +.primary-menu .sub-menu a { + display: block; + padding: 0.45rem 0.5rem; + white-space: nowrap; +} +.primary-menu .sub-menu a:hover, +.primary-menu .sub-menu a:focus { + background: var(--bg); +} +@media (max-width: 760px) { + .primary-menu .sub-menu { + position: static; + display: block; + min-width: 0; + padding: 0.35rem 0 0.1rem 1rem; + margin: 0.35rem 0 0; + border: 0; + border-left: 1px solid var(--line); + box-shadow: none; + opacity: 1; + visibility: visible; + transform: none; + } + .primary-menu .sub-menu a { + padding: 0.25rem 0; + white-space: normal; + } +} +.primary-menu > li.menu-item-has-children > a::after { + display: inline-block; + margin-left: 0.45em; + content: "▾"; + color: var(--accent); + font-size: 0.85em; + vertical-align: 0.05em; +} +.primary-menu .sub-menu > li.menu-item-has-children > a { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; +} +.primary-menu .sub-menu > li.menu-item-has-children > a::after { + content: "▸"; + color: var(--accent); + font-size: 0.9em; +} +.primary-menu .sub-menu .sub-menu { + top: -0.6rem; + left: calc(100% + 0.6rem); +} +.primary-menu .sub-menu .sub-menu::before { + position: absolute; + top: 0; + bottom: 0; + left: -0.6rem; + width: 0.6rem; + content: ""; +} +@media (max-width: 760px) { + .primary-menu > li.menu-item-has-children > a::after, + .primary-menu .sub-menu > li.menu-item-has-children > a::after { + content: "▾"; + } + .primary-menu .sub-menu .sub-menu { + position: static; + margin: 0.35rem 0 0; + transform: none; + } +} +.primary-menu li:hover > .sub-menu, +.primary-menu li:focus-within > .sub-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); +} +.primary-menu > li.menu-item-has-children > a::after, +.primary-menu .sub-menu > li.menu-item-has-children > a::after { + font-size: 1.45em; + line-height: 0.4; +} +.primary-menu .sub-menu .sub-menu { + left: calc(100% - 1px); +} +.primary-menu li { + position: relative; +} +.site-branding { + display: flex; + align-items: center; + gap: 1rem; +} +.site-description { + margin: 0; + white-space: nowrap; +} +.primary-menu > li.menu-item-has-children > a::after { + vertical-align: -0.2em; +} +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + } +}