/* Wayne Bisset — editorial / gallery design system
   Paper for the writing, charcoal for the photographs. */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..900;1,9..144,300..700&family=Newsreader:ital,opsz,wght@0,6..72,300..600;1,6..72,300..500&display=swap');

:root{
  --paper:#f6f2ea;
  --paper-deep:#ece5d8;
  --ink:#1c1815;
  --ink-soft:#4a423a;
  --line:#d8cfbf;
  --accent:#9a3b1b;        /* burnt sienna, used sparingly */
  --accent-deep:#742a12;
  --charcoal:#13110f;
  --charcoal-soft:#1d1a17;
  --display:'Fraunces',Georgia,serif;
  --body:'Newsreader',Georgia,serif;
  --maxw:1120px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:1.12rem;line-height:1.65;
  font-optical-sizing:auto;-webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none;}
a:hover{color:var(--accent-deep);}
img{max-width:100%;display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.narrow{max-width:680px;margin:0 auto;padding:0 28px;}

/* ---- header ---- */
.masthead{border-bottom:1px solid var(--line);position:sticky;top:0;
  background:rgba(246,242,234,.92);backdrop-filter:blur(8px);z-index:40;}
.masthead .wrap{display:flex;align-items:baseline;justify-content:space-between;
  padding-top:18px;padding-bottom:18px;gap:24px;}
.brand{font-family:var(--display);font-weight:600;font-size:1.5rem;letter-spacing:.01em;
  color:var(--ink);font-variation-settings:'opsz' 40;}
.brand small{display:block;font-family:var(--body);font-weight:400;font-size:.7rem;
  letter-spacing:.28em;text-transform:uppercase;color:var(--ink-soft);margin-top:2px;}
nav.main{display:flex;gap:26px;align-items:baseline;flex-wrap:wrap;}
nav.main a{color:var(--ink-soft);font-size:.82rem;letter-spacing:.16em;
  text-transform:uppercase;font-family:var(--body);}
nav.main a:hover,nav.main a.active{color:var(--accent);}

/* ---- hero ---- */
.hero{padding:96px 0 72px;border-bottom:1px solid var(--line);}
.hero h1{font-family:var(--display);font-weight:340;font-size:clamp(2.6rem,6vw,5rem);
  line-height:1.02;margin:0 0 .4em;letter-spacing:-.02em;font-variation-settings:'opsz' 144;}
.hero .lede{font-size:1.4rem;line-height:1.5;max-width:620px;color:var(--ink-soft);
  font-style:italic;}
.kicker{font-size:.74rem;letter-spacing:.32em;text-transform:uppercase;
  color:var(--accent);margin-bottom:1.4em;font-family:var(--body);}

/* ---- section heads ---- */
.section{padding:72px 0;}
.section + .section{border-top:1px solid var(--line);}
.section-head{display:flex;align-items:baseline;justify-content:space-between;
  margin-bottom:40px;gap:18px;flex-wrap:wrap;}
.section-head h2{font-family:var(--display);font-weight:380;font-size:2.1rem;margin:0;
  letter-spacing:-.01em;}
.section-head a{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;}

/* ---- story cards ---- */
.story-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:42px;}
.story{border-top:2px solid var(--ink);padding-top:18px;}
.story .meta{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--accent);margin-bottom:10px;}
.story h3{font-family:var(--display);font-weight:420;font-size:1.55rem;line-height:1.12;
  margin:0 0 .4em;}
.story p{margin:.2em 0 0;color:var(--ink-soft);font-size:1.02rem;}
.lock{display:inline-block;margin-top:14px;font-size:.74rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);
  padding:5px 12px;border-radius:2px;}

/* ---- long-read ---- */
article.read{padding:80px 0;}
article.read h1{font-family:var(--display);font-weight:360;font-size:clamp(2rem,5vw,3.4rem);
  line-height:1.08;letter-spacing:-.02em;margin:0 0 .5em;font-variation-settings:'opsz' 144;}
article.read .byline{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);margin-bottom:2.4em;}
article.read .prose{font-size:1.22rem;line-height:1.75;}
article.read .prose p{margin:0 0 1.3em;}
article.read .prose p:first-of-type::first-letter{font-family:var(--display);
  font-size:3.6em;line-height:.8;float:left;padding:.06em .08em 0 0;color:var(--accent);font-weight:400;}
.paywall{margin-top:48px;padding:40px;border:1px solid var(--line);background:var(--paper-deep);
  text-align:center;border-radius:4px;}
.paywall h3{font-family:var(--display);font-size:1.6rem;font-weight:420;margin:.2em 0 .5em;}

/* ---- gallery (dark) ---- */
.gallery-page{background:var(--charcoal);color:#efe9df;}
.gallery-page .masthead{background:rgba(19,17,15,.9);border-color:#2a2622;}
.gallery-page .brand,.gallery-page nav.main a{color:#cfc7ba;}
.gallery-page nav.main a:hover{color:#fff;}
.gallery-head{padding:80px 0 40px;text-align:center;}
.gallery-head h1{font-family:var(--display);font-weight:340;font-size:clamp(2.4rem,6vw,4rem);
  margin:0;letter-spacing:-.02em;}
.gallery-head p{color:#9d958a;font-style:italic;font-size:1.2rem;}
.grid-masonry{columns:3 320px;column-gap:18px;padding-bottom:90px;}
.grid-masonry figure{margin:0 0 18px;break-inside:avoid;position:relative;overflow:hidden;
  background:var(--charcoal-soft);}
.grid-masonry img{width:100%;transition:transform .9s cubic-bezier(.2,.8,.2,1),filter .6s;}
.grid-masonry figure:hover img{transform:scale(1.04);}
.grid-masonry figcaption{position:absolute;left:0;right:0;bottom:0;padding:30px 16px 14px;
  font-size:.92rem;color:#f3ede2;background:linear-gradient(transparent,rgba(0,0,0,.75));
  opacity:0;transition:opacity .4s;font-style:italic;}
.grid-masonry figure:hover figcaption{opacity:1;}
.tag-members{position:absolute;top:12px;right:12px;font-size:.64rem;letter-spacing:.18em;
  text-transform:uppercase;background:var(--accent);color:#fff;padding:4px 9px;border-radius:2px;z-index:2;}

/* ---- buttons & forms ---- */
.btn{display:inline-block;font-family:var(--body);font-size:.84rem;letter-spacing:.14em;
  text-transform:uppercase;padding:13px 26px;border:1px solid var(--ink);color:var(--ink);
  background:transparent;cursor:pointer;border-radius:2px;transition:.2s;}
.btn:hover{background:var(--ink);color:var(--paper);}
.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn-accent:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;}
.btn-sm{padding:8px 16px;font-size:.74rem;}
input,textarea,select{font-family:var(--body);font-size:1.05rem;width:100%;padding:12px 14px;
  border:1px solid var(--line);background:#fffdf9;border-radius:3px;color:var(--ink);}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);}
label{display:block;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);margin:18px 0 7px;}
.field{margin-bottom:6px;}
textarea{min-height:180px;line-height:1.6;resize:vertical;}

/* ---- pricing / tiers ---- */
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:24px;}
.tier{border:1px solid var(--line);padding:34px 28px;border-radius:4px;background:#fffdf9;}
.tier h3{font-family:var(--display);font-size:1.7rem;font-weight:420;margin:0 0 .1em;}
.tier .price{font-family:var(--display);font-size:2.6rem;font-weight:340;color:var(--accent);}
.tier .price span{font-family:var(--body);font-size:.9rem;color:var(--ink-soft);}
.tier ul{list-style:none;padding:0;margin:18px 0 26px;font-size:1rem;color:var(--ink-soft);}
.tier li{padding:6px 0;border-bottom:1px dotted var(--line);}

/* ---- flash ---- */
.flash{background:var(--accent);color:#fff;padding:12px 0;text-align:center;font-size:.95rem;}
.flash .wrap{padding-top:0;padding-bottom:0;}

/* ---- footer ---- */
footer{border-top:1px solid var(--line);padding:48px 0;margin-top:40px;
  font-size:.85rem;color:var(--ink-soft);}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;}

/* ---- admin ---- */
.studio{background:#22201d;color:#e9e4da;min-height:100vh;font-size:1.02rem;}
.studio a{color:#e6a17f;}
.studio .bar{border-bottom:1px solid #38332e;padding:16px 0;}
.studio .bar .wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;}
.studio .bar .brand{color:#fff;font-size:1.2rem;}
.studio nav a{margin-right:20px;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:#b7afa3;}
.studio nav a:hover{color:#fff;}
.studio .panel{background:#2b2925;border:1px solid #3a352f;border-radius:6px;padding:26px;margin:22px 0;}
.studio h1,.studio h2{font-family:var(--display);font-weight:420;color:#fff;}
.studio input,.studio textarea,.studio select{background:#1c1a17;border-color:#3a352f;color:#f0ebe1;}
.studio label{color:#9c9488;}
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;}
.stat{background:#2b2925;border:1px solid #3a352f;border-radius:6px;padding:22px;text-align:center;}
.stat .n{font-family:var(--display);font-size:2.6rem;color:#e6a17f;line-height:1;}
.stat .l{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:#9c9488;margin-top:8px;}
table.list{width:100%;border-collapse:collapse;}
table.list th,table.list td{text-align:left;padding:12px 10px;border-bottom:1px solid #3a352f;font-size:.96rem;}
table.list th{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#9c9488;}
.pill{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:20px;border:1px solid currentColor;}
.pill.public{color:#7fb27f;}.pill.members{color:#e6a17f;}.pill.private{color:#9c9488;}
.checkrow{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin:14px 0;}
.checkrow label{display:flex;align-items:center;gap:8px;margin:0;text-transform:none;letter-spacing:0;font-size:1rem;}
.checkrow input{width:auto;}
.inline-form{display:inline;}
.muted{color:var(--ink-soft);}
.note{background:var(--paper-deep);border-left:3px solid var(--accent);padding:14px 18px;
  font-size:.95rem;border-radius:0 4px 4px 0;margin:18px 0;}

/* select photos for print */
.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:18px 0;}
.pick{position:relative;cursor:pointer;border:3px solid transparent;border-radius:4px;overflow:hidden;}
.pick img{width:100%;height:150px;object-fit:cover;}
.pick input{position:absolute;opacity:0;}
.pick.selected{border-color:var(--accent);}
.pick .badge{position:absolute;top:6px;left:6px;background:var(--accent);color:#fff;width:24px;height:24px;
  border-radius:50%;display:none;align-items:center;justify-content:center;font-size:.8rem;}
.pick.selected .badge{display:flex;}

@media(max-width:640px){
  .masthead .wrap{flex-direction:column;align-items:flex-start;gap:12px;}
  .grid-masonry{columns:1;}
  body{font-size:1.06rem;}
}
