/* ============================================================
   Brutalism design system (better-design.com/design-systems/brutalism)
   Tokens + component kit, then site layout.
   ============================================================ */

/* ---------- Tokens ---------- */
:root {
  --background: oklch(0.955 0.012 96);
  --foreground: oklch(0.115 0.012 255);
  --card: oklch(0.995 0.002 96);
  --card-foreground: oklch(0.115 0.012 255);
  --popover: oklch(0.995 0.002 96);
  --popover-foreground: oklch(0.115 0.012 255);
  --primary: oklch(0.89 0.18 96);
  --primary-foreground: oklch(0.105 0.01 255);
  --secondary: oklch(0.9 0.008 96);
  --secondary-foreground: oklch(0.13 0.012 255);
  --muted: oklch(0.91 0.006 96);
  --muted-foreground: oklch(0.36 0.018 255);
  --accent: var(--primary);
  --accent-foreground: var(--primary-foreground);
  --destructive: oklch(0.57 0.22 28);
  --destructive-foreground: oklch(0.995 0.002 96);
  --border: oklch(0.115 0.012 255);
  --input: oklch(0.995 0.002 96);
  --ring: oklch(0.59 0.19 258);
  --radius: 0.125rem;
  --success: oklch(0.78 0.2 145);
  --success-foreground: oklch(0.105 0.01 255);
  --warning: var(--primary);
  --warning-foreground: var(--primary-foreground);
  --info: oklch(0.59 0.19 258);
  --info-foreground: oklch(0.995 0.002 96);
  --overlay: oklch(0 0 0 / 0.55);
  --shadow-xs: 0.125rem 0.125rem 0 oklch(0.115 0.012 255);
  --shadow-sm: 0.1875rem 0.1875rem 0 oklch(0.115 0.012 255);
  --shadow-md: 0.25rem 0.25rem 0 oklch(0.115 0.012 255);
  --shadow-lg: 0.375rem 0.375rem 0 oklch(0.115 0.012 255);
  --shadow-xl: 0.5rem 0.5rem 0 oklch(0.115 0.012 255);
  --shadow-s: var(--shadow-sm);
  --shadow-m: var(--shadow-md);
  --shadow-l: var(--shadow-lg);
  --shadow-inset: inset 0 0 0 0.125rem oklch(0.115 0.012 255), 0.125rem 0.125rem 0 oklch(0.115 0.012 255);
  --shadow-button: 0.25rem 0.25rem 0 oklch(0.115 0.012 255);
  --shadow-button-hover: 0.3125rem 0.3125rem 0 oklch(0.115 0.012 255);
  --shadow-primary: 0.25rem 0.25rem 0 oklch(0.115 0.012 255);
  --transition-duration-fast: 120ms;
  --transition-duration-base: 160ms;
  --ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --font-brutalist-sans: Inter, Arial, Helvetica, sans-serif;
  --font-brutalist-mono: "IBM Plex Mono", "SFMono-Regular", "SF Mono", ui-monospace, Menlo, Consolas, "Liberation Mono", monospace;
  --font-sans: var(--font-brutalist-sans);
  --font-mono: var(--font-brutalist-mono);
  --radius-sm: var(--radius);
  --radius-md: var(--radius);
  --radius-lg: calc(var(--radius) + 0.0625rem);
  --radius-xl: calc(var(--radius) + 0.125rem);
}

/* ---------- Component kit ---------- */
*,*::before,*::after{box-sizing:border-box}
:where(.ds){font-family:var(--font-sans,ui-sans-serif,system-ui,sans-serif);color:var(--foreground);background:var(--background);line-height:1.5}
.ds :where(h1,h2,h3,h4,h5,h6,p,strong,label,legend,li,dt,dd,small){color:inherit}
.ds h1,.ds h2,.ds h3,.ds h4{font-family:inherit;font-weight:600;margin:0 0 .5em;color:var(--foreground);text-wrap:balance}
.ds .ds-display,.ds .ds-section-title,.ds-card-title{font-family:inherit;text-wrap:balance}
.ds .ds-display{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.05;letter-spacing:-.03em;margin:0;color:var(--foreground)}
.ds .ds-section-title{font-size:1.25rem;font-weight:600;line-height:1.2;letter-spacing:-.01em;margin:0;color:var(--foreground)}
.ds .ds-supporting,.ds .ds-card-desc,.ds p{font-size:.875rem;font-weight:400;line-height:1.5;color:var(--muted-foreground);margin:0;text-wrap:pretty}
.ds a:not(.ds-btn){color:var(--foreground);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:2px}
.ds p{margin:0 0 1em}
.ds-muted{color:var(--muted-foreground)}

.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;white-space:nowrap;font-family:var(--font-mono);font-size:.75rem;line-height:1;font-weight:900;text-transform:uppercase;letter-spacing:.12em;padding:.7rem 1rem;border-radius:.125rem;border:2px solid var(--border);cursor:pointer;user-select:none;touch-action:manipulation;text-decoration:none;transition:background-color var(--transition-duration-fast),box-shadow var(--transition-duration-fast),translate var(--transition-duration-fast),color var(--transition-duration-fast)}
.ds-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.ds-btn:disabled{pointer-events:none;opacity:.5}
.ds-btn:active{translate:.1875rem .1875rem;box-shadow:1px 1px 0 oklch(0.115 0.012 255)}
.ds .ds-btn-primary{background-color:var(--primary);color:var(--primary-foreground);box-shadow:var(--shadow-primary)}
.ds .ds-btn-secondary{background-color:var(--card);color:var(--foreground);box-shadow:var(--shadow-button)}
.ds .ds-btn-outline{background-color:var(--background);color:var(--foreground);box-shadow:var(--shadow-sm)}
.ds .ds-btn-ghost{border-color:transparent;background-color:transparent;color:var(--foreground);box-shadow:none}
.ds .ds-btn[aria-pressed="true"]{background:var(--primary);color:var(--primary-foreground);border-color:var(--border)}
.ds-btn-sm{padding:.5rem .7rem;font-size:.6875rem}
.ds-btn-lg{padding:.9rem 1.4rem;font-size:.8125rem}

.ds-label{display:block;font-size:.8125rem;font-weight:600;margin-bottom:.4rem;color:var(--foreground)}
.ds-input,.ds-textarea,.ds-select{width:100%;font:inherit;font-size:.9375rem;padding:.6rem .75rem;border-radius:var(--radius-lg);border:2px solid var(--border);background:var(--input);color:var(--foreground);box-shadow:var(--shadow-inset);transition:box-shadow var(--transition-duration-fast)}
.ds-input::placeholder,.ds-textarea::placeholder{color:var(--muted-foreground)}
.ds-input:focus,.ds-textarea:focus,.ds-select:focus{outline:none;box-shadow:var(--shadow-inset),0 0 0 3px color-mix(in oklab,var(--ring) 45%,transparent)}
.ds-textarea{min-height:4.5rem;resize:vertical}

.ds-card{display:flex;flex-direction:column;background-color:var(--card);color:var(--card-foreground);border:2px solid var(--border);border-radius:.125rem;box-shadow:var(--shadow-m);overflow:hidden}
.ds-card-header{padding:1.1rem 1.25rem .5rem}
.ds-card-body{padding:.5rem 1.25rem 1.1rem}
.ds-card-footer{margin-top:auto;padding:.9rem 1.25rem;border-top:2px solid var(--border);display:flex;gap:.5rem;align-items:center}
.ds-card-title{font-size:1.05rem;margin:0 0 .25rem}
.ds-card-desc{font-size:.875rem;color:var(--muted-foreground);margin:0}

.ds-badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:.125rem;border:2px solid var(--border);padding:.125rem .5rem;font-family:var(--font-mono);font-size:.6875rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;box-shadow:var(--shadow-xs);background-color:var(--card);color:var(--foreground);line-height:1.4}
.ds-badge-primary{background:var(--primary);color:var(--primary-foreground)}
.ds-badge-safe{background:var(--success);color:var(--success-foreground)}

.ds-alert{border:2px solid var(--border);border-radius:var(--radius-lg);padding:.9rem 1rem;background:var(--card);color:var(--card-foreground);font-size:.875rem;box-shadow:var(--shadow-sm)}
.ds-alert-title{font-weight:700;margin:0 0 .2rem}
.ds-divider{height:2px;background:var(--border);border:0;margin:1.5rem 0}
.ds-row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.ds-field{margin-bottom:1rem}

.ds-progress{height:.875rem;border:2px solid var(--border);border-radius:.125rem;background:var(--card);overflow:hidden}
.ds-progress-bar{height:100%;background:var(--primary);border-right:2px solid var(--border)}

.ds-table{width:100%;border-collapse:collapse;font-size:.8125rem;background:var(--card)}
.ds-table th,.ds-table td{text-align:left;padding:.5rem .75rem;border:2px solid var(--border);vertical-align:top}
.ds-table th{font-family:var(--font-mono);font-weight:900;color:var(--foreground);background:var(--primary);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em}

.ds-chip{display:inline-flex;align-items:center;gap:.35rem;font:inherit;font-size:.8125rem;padding:.35rem .75rem;border-radius:.125rem;border:2px solid var(--border);background:var(--card);color:var(--foreground);cursor:pointer;touch-action:manipulation}
.ds-chip:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.ds .ds-chip[aria-pressed="true"],.ds .ds-chip[aria-current="page"]{background:var(--primary);color:var(--primary-foreground);border-color:var(--border);font-weight:700}
.ds-kbd{font-family:var(--font-mono);font-size:.75rem;padding:.1rem .4rem;border-radius:var(--radius-sm);border:2px solid var(--border);background:var(--muted);color:var(--foreground)}

@media (pointer:coarse){
  .ds-btn,.ds-chip{min-height:44px}
  .ds-input,.ds-select{min-height:44px;font-size:1rem}
}
@media (hover:hover) and (pointer:fine){
  .ds-btn:hover:not(:disabled){translate:-1px -1px}
  .ds .ds-btn-primary:hover,.ds .ds-btn-secondary:hover{box-shadow:var(--shadow-button-hover)}
  .ds .ds-btn-outline:hover{background-color:var(--card);box-shadow:var(--shadow-md)}
  .ds .ds-chip:hover:not([aria-pressed="true"]):not([aria-current="page"]){background:var(--secondary)}
  .ds a:not(.ds-btn):hover{background:var(--primary);color:var(--primary-foreground)}
}
.ds ::selection{background:var(--primary);color:var(--primary-foreground)}

/* Host isolation */
body.ds{color:var(--foreground);background:var(--background)}
body.ds :where(h1,h2,h3,h4,h5,h6,p,strong,label,legend,li,dt,dd,small):not(.ds-supporting):not(.ds-card-desc):not(.ds-muted){color:inherit}

/* ============================================================
   Site layout (layout only)
   ============================================================ */
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh}
.skip{position:absolute;left:-999px}
.skip:focus{left:1rem;top:1rem;z-index:10}

.site-header{border-bottom:2px solid var(--border);background:var(--card)}
.site-header-inner{max-width:68rem;margin:0 auto;padding:.85rem 1rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-weight:900;text-transform:uppercase;letter-spacing:.08em;font-size:.875rem;color:var(--foreground);text-decoration:none!important}
.brand-mark{width:2rem;height:2rem;flex:none}
.site-nav{display:flex;gap:.4rem;flex-wrap:wrap;margin-left:auto}
.site-nav .ds-chip{text-decoration:none!important;font-family:var(--font-mono);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}

.layout{max-width:68rem;margin:0 auto;padding:1.5rem 1rem 4rem;display:grid;grid-template-columns:14rem minmax(0,1fr);gap:2rem}
.sidebar{position:sticky;top:1rem;align-self:start;max-height:calc(100vh - 2rem);overflow:auto}
.sidebar-group{margin-bottom:1.25rem}
.sidebar-title{font-family:var(--font-mono);font-size:.6875rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;margin:0 0 .4rem}
.sidebar ul{list-style:none;margin:0;padding:0}
.sidebar li a{display:block;padding:.25rem .4rem;font-size:.8125rem;text-decoration:none!important;border:2px solid transparent}
.sidebar li a[aria-current="page"]{background:var(--primary);border-color:var(--border);font-weight:700}
.single{max-width:46rem;margin:0 auto;padding:1.5rem 1rem 4rem}

@media (max-width:52rem){
  .layout{grid-template-columns:1fr}
  .sidebar{position:static;max-height:none;border:2px solid var(--border);background:var(--card);padding:.75rem}
  .sidebar details:not([open]) .sidebar-body{display:none}
}
.sidebar summary{display:none}
@media (max-width:52rem){
  .sidebar summary{display:block;cursor:pointer;font-family:var(--font-mono);font-weight:900;text-transform:uppercase;font-size:.75rem;letter-spacing:.08em}
  .sidebar-body{margin-top:.75rem}
}

/* Markdown prose */
.prose{min-width:0;font-size:1rem;line-height:1.65}
.prose > *:first-child{margin-top:0}
.prose p,.prose li{color:var(--foreground);font-size:1rem}
.prose h1{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;letter-spacing:-.03em;line-height:1.1;margin:0 0 1rem}
.prose h2{font-size:1.4rem;font-weight:800;margin:2.25rem 0 .75rem;padding-bottom:.35rem;border-bottom:2px solid var(--border)}
.prose h3{font-size:1.1rem;font-weight:700;margin:1.5rem 0 .5rem}
.prose ul,.prose ol{padding-left:1.4rem;margin:0 0 1em}
.prose li{margin:.2rem 0}
.prose blockquote{margin:1rem 0;padding:.9rem 1.1rem;background:var(--primary);border:2px solid var(--border);box-shadow:var(--shadow-sm)}
.prose blockquote p{margin:0;color:var(--primary-foreground)}
.prose blockquote p + p{margin-top:.5rem}
.prose code{font-family:var(--font-mono);font-size:.85em;background:var(--muted);border:1px solid var(--border);padding:.05rem .3rem}
.prose pre{background:var(--card);border:2px solid var(--border);box-shadow:var(--shadow-sm);padding:1rem;overflow:auto;line-height:1.4}
.prose pre code{background:none;border:0;padding:0}
.prose hr{height:2px;background:var(--border);border:0;margin:2rem 0}
.table-wrap{overflow-x:auto;margin:0 0 1.25rem;border:2px solid var(--border);box-shadow:var(--shadow-sm)}
.table-wrap .ds-table{margin:0;border-style:hidden}
.prose input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--foreground);vertical-align:-2px;margin-right:.35rem}
.prose li:has(> input[type=checkbox]){list-style:none;margin-left:-1.4rem}

.page-foot{margin-top:3rem;padding-top:1rem;border-top:2px solid var(--border);display:flex;gap:1rem;flex-wrap:wrap;font-size:.8125rem}

/* ---------- Today page ---------- */
.today-head{display:grid;gap:.75rem;margin-bottom:1.75rem}
.today-meta{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:1.25rem}
.step{display:grid;grid-template-columns:2.5rem minmax(0,1fr);gap:1rem}
.step-num{width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:900;border:2px solid var(--border);background:var(--card);box-shadow:var(--shadow-xs)}
.step.done .step-num{background:var(--primary)}
.step-body{min-width:0;display:grid;gap:.6rem;padding-bottom:1.25rem;border-bottom:2px dashed var(--border)}
.step:last-child .step-body{border-bottom:0}
.step-title{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.step-title h3{margin:0;font-size:1.1rem;font-weight:800}
.step-time{font-family:var(--font-mono);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground)}
.verse{border:2px solid var(--border);background:var(--card);padding:1rem;box-shadow:var(--shadow-sm)}
.verse-ref{font-family:var(--font-mono);font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin:0 0 .35rem}
.verse-sa{font-style:italic;font-size:1rem;margin:0 0 .4rem;color:var(--foreground)}
.verse-en{margin:0;color:var(--foreground);font-size:.9375rem}
.story-box{border:2px solid var(--border);background:var(--card);padding:1rem 1.1rem;max-height:22rem;overflow:auto}
.story-box p{color:var(--foreground);font-size:.9375rem;margin:0 0 .75rem}
.check{display:flex;gap:.6rem;align-items:flex-start;font-size:.9375rem;cursor:pointer}
.check input{width:1.15rem;height:1.15rem;margin-top:.15rem;accent-color:var(--foreground);flex:none}
.goal-list{display:grid;gap:.5rem}
.ifthen{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem .6rem;align-items:center}
.ifthen .ds-label{margin:0;font-family:var(--font-mono);text-transform:uppercase;font-weight:900;font-size:.75rem}
.habit-grid{display:grid;gap:.5rem}
.day-strip{display:grid;grid-template-columns:repeat(20,1fr);gap:3px;margin-top:.5rem}
.day-strip span{aspect-ratio:1;border:1.5px solid var(--border);background:var(--card)}
.day-strip span.on{background:var(--primary)}
.day-strip span.today{outline:2px solid var(--ring);outline-offset:1px}
.actions-bar{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin-top:2rem;padding-top:1.25rem;border-top:2px solid var(--border)}
.status{font-size:.8125rem;color:var(--muted-foreground)}
.evening{margin-top:2.5rem}
.evening summary{cursor:pointer;font-weight:800;font-size:1.1rem;list-style:none;display:flex;align-items:center;gap:.6rem}
.evening summary::-webkit-details-marker{display:none}
.evening summary::before{content:"+";font-family:var(--font-mono);width:1.75rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--border);background:var(--card)}
.evening[open] summary::before{content:"\2212"}
.evening-body{display:grid;gap:1rem;margin-top:1rem}
@media (max-width:40rem){
  .step{grid-template-columns:2rem minmax(0,1fr);gap:.75rem}
  .step-num{width:2rem;height:2rem;font-size:.8125rem}
  .day-strip{grid-template-columns:repeat(10,1fr)}
}
.sidebar details{display:none}
@media (max-width:52rem){
  .sidebar details{display:block}
  .sidebar-desktop{display:none}
}
