Files
PineCreek_Web_2.0/css/main.scss
Chris Olson b69e0baaa0 Optimize: drop Bootstrap CDN, add caching headers & image hints
Performance / self-hosting
- Remove the render-blocking Bootstrap 4 CDN stylesheet (~160 KB + extra
  DNS/TLS to a third party) and replace it with ~60 lines of self-hosted
  grid/utility CSS covering the small subset actually used (container, row,
  col-lg-5/6/7, order-lg, align-items-center, text-center, table-responsive,
  spacing, and the button base). Verified across desktop/tablet/mobile.
- Add a Cloudflare Pages `_headers` file: 30-day cache for static media and
  icons, 1-day for css/js, plus baseline security headers
  (X-Content-Type-Options, Referrer-Policy).
- Add decoding="async" to all lazily-loaded images.

The site now loads no third-party CSS; only Google Fonts remain external.
SCSS source kept in sync (new components/_grid partial; button base + reset
mirrored in main.scss).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 06:25:18 -04:00

114 lines
1.9 KiB
SCSS

// colors
$gold: #AB996D;
$white: #ffffff;
$gray: #585858;
$light-gray: #bebebe;
$black: #231F20;
$cream: #F7F4EE;
// breakpoints
$xs-break: 575px;
$s-break: 767px;
$m-break: 991px;
$l-break: 1199px;
// fonts
@mixin Libre {
font-family: 'Libre Baskerville', serif;
}
@mixin Lato {
font-family: 'Lato', sans-serif;
}
* { box-sizing: border-box; }
@import 'components/grid';
//btns
.btn {
@include Libre;
display: inline-block;
vertical-align: middle;
text-align: center;
border: 1px solid transparent;
line-height: 1.5;
cursor: pointer;
text-decoration: none;
user-select: none;
font-size: 14px;
letter-spacing: 0.3px;
padding: 0.55rem 1.5rem;
border-radius: 2px;
& + .btn { margin-left: 0.5rem; }
}
.btn-light {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-primary {
color: $white;
background-color: $gold;
border-color: $gold;
&:hover { color: $white; }
&:hover {
background-color: darken($gold, 10%);
border-color: darken($gold, 10%);
}
&:active,
&:focus,
&:not(:disabled):not(.disabled):active,
&:not(:disabled):not(.disabled):active:focus {
background-color: darken($gold, 15%);
border-color: darken($gold, 15%);
box-shadow: 0 0 0 0.2rem rgba(129, 113, 74, .5);
}
}
body {
@include Lato;
background-color: $white;
color: $black;
margin: 0;
overflow-x: hidden;
line-height: 1.65;
}
// Enable native smooth-scrolling for in-page anchor navigation
html {
scroll-behavior: smooth;
}
p, a, li, span, div, td, th {
@include Lato;
}
h1, h2, h3, h4, h5, h6 {
@include Libre;
margin-top: 0;
}
p { margin-top: 0; margin-bottom: 1rem; }
img { max-width: 100%; vertical-align: middle; }
.page-content {
padding-top: 92px;
@media (max-width: $m-break) { padding-top: 72px; }
}
@import 'components/nav';
@import 'components/hero';
@import 'components/sections';
@import 'components/gallery';
@import 'components/board';
@import 'components/features';