/*##############################################################################
# Script:        book.css    (Teach It Forward; project version in aiacolyte.py)
# Created by:    Matthew Boucher
# Start date:    2026-10-20
# Location:      <project root>/teachitforward/css/book.css   (published copy: <project root>/frontend/teachitforward/css/book.css)
# Description:   The book pages' own look (frontend-design pass 2026-10-20): a document's main page with its chapter
#                CliffyNotes, the page reader, the Contents and the Glossary. The shared Forward header, network bar and
#                footer are left alone; only the content between them changes. The idea: a study desk. The pages and
#                notes are white sheets lying on a sage-grey desk, set in Literata (a typeface drawn for reading books
#                on screen); page numbers sit in a pencil-grey margin like a textbook's; key terms are marked with a
#                highlighter. The one bold element is each chapter note's page ruler: the chapter's pages drawn as a
#                strip with a mark wherever a key point (olive) or a key term (highlighter) comes from, so a student
#                sees at a glance where in the chapter each idea lives and can click straight to that page. The
#                slideshow keeps its PDF colours (slides.css). Loaded after teach.css, on the book pages and the library
#                home (index.html, body class teach-home), whose hero draws a chapter note's page ruler.
# Reads:         ../fonts/literata-normal.woff2 and literata-italic.woff2 (SIL Open Font License, LICENSE-Literata-OFL.txt)
# Writes:        nothing.
##############################################################################*/
@font-face { font-family:"Literata"; src:url("../fonts/literata-normal.woff2") format("woff2"); font-weight:200 900; font-style:normal; font-display:swap; }
@font-face { font-family:"Literata"; src:url("../fonts/literata-italic.woff2") format("woff2"); font-weight:200 900; font-style:italic; font-display:swap; }

.teach-book { --desk:#e6e9e1; --sheet:#fefefc; --book-ink:#1c2421; --olive:#566f12; --marker:#e4f49c; --pencil:#5f675f;
  --edge:#cfd5c8; --serif:"Literata",Georgia,"Times New Roman",serif; background:var(--desk); }
.teach-book .teach-main { max-width:1120px; padding-block:30px 80px; color:var(--book-ink); }
.teach-book .teach-crumbs { font-size:.8rem; color:var(--pencil); margin-bottom:26px; }
.teach-book .teach-crumbs a { color:var(--olive); }

/* a sheet of paper: square corners, a hairline edge and the edge of the sheet beneath it */
.teach-book .book-sheet,.teach-book .teach-page,.teach-book .teach-note { background:var(--sheet); border:1px solid var(--edge); border-radius:0;
  box-shadow:0 3px 0 -1px var(--sheet),0 3px 0 0 var(--edge); }

/* ---------- the book's title block ---------- */
.book-title { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:18px 48px; align-items:end; padding-bottom:30px;
  border-bottom:1px solid var(--edge); margin-bottom:34px; }
.book-title h1 { font-family:var(--serif); font-weight:600; font-size:clamp(2.3rem,5.2vw,3.6rem); line-height:1.04; letter-spacing:-.02em;
  font-variation-settings:"opsz" 72; margin:0 0 14px; overflow-wrap:anywhere; }
.book-title .book-kind { font-size:.88rem; color:var(--pencil); margin:0 0 10px; }
.book-title .teach-lead { font-family:var(--serif); font-size:1.08rem; line-height:1.7; color:#3c4540; max-width:62ch; }
.book-title > .teach-flag { grid-column:1 / -1; background:var(--sheet); margin:0; }
.book-title .teach-credit { margin-top:16px; }
.book-actions { display:grid; gap:12px; justify-items:start; min-width:15rem; }
.book-actions .button { background:var(--olive); min-height:46px; gap:12px; font-size:.86rem; }
.book-actions .button:hover { background:var(--book-ink); }
.book-actions nav { display:flex; flex-wrap:wrap; gap:6px 18px; font-size:.86rem; font-weight:600; }
.book-actions nav a { color:var(--olive); }
.book-actions .teach-jump { margin-top:4px; }
.book-actions .teach-jump input { background:var(--sheet); border-color:var(--edge); }
.book-actions .teach-jump button { background:var(--olive); border-color:var(--olive); }
.book-progress { font-size:.8rem; color:var(--pencil); margin:0; max-width:17rem; }
.teach-book .teach-controls { grid-column:1 / -1; margin-top:4px; }

/* ---------- the study desk: the chapter index beside the chapter notes ---------- */
.study-desk { display:grid; grid-template-columns:15.5rem minmax(0,1fr); gap:40px; align-items:start; }
.study-desk > header { grid-column:1 / -1; }
.study-desk h2 { font-family:var(--serif); font-weight:600; font-size:1.65rem; letter-spacing:-.01em; margin:0 0 6px; }
.study-desk > header p { color:var(--pencil); font-size:.9rem; max-width:66ch; }
.desk-index { position:sticky; top:20px; max-height:calc(100vh - 40px); overflow:auto; padding-right:6px; }
.desk-index ol { list-style:none; margin:0; padding:0; counter-reset:ch; }
.desk-index li { counter-increment:ch; }
.desk-index a { display:grid; grid-template-columns:1.6rem minmax(0,1fr) auto; gap:4px; align-items:baseline; padding:7px 8px 7px 0;
  color:var(--book-ink); text-decoration:none; font-size:.84rem; line-height:1.35; border-bottom:1px solid var(--edge); }
.desk-index a::before { content:counter(ch); color:var(--pencil); font-variant-numeric:tabular-nums; font-size:.76rem; }
.desk-index a span { color:var(--pencil); font-size:.74rem; font-variant-numeric:tabular-nums; }
.desk-index a:hover { color:var(--olive); }
.desk-index a.is-waiting { color:var(--pencil); }
.desk-index .desk-key { margin-top:14px; font-size:.74rem; color:var(--pencil); }
.desk-notes { display:grid; gap:34px; min-width:0; }

/* ---------- one chapter's CliffyNotes ---------- */
.chapter-sheet { padding:30px 38px 26px; scroll-margin-top:24px; }
.chapter-sheet > header { display:grid; gap:4px; margin-bottom:18px; }
.chapter-sheet .chapter-label { font-size:.8rem; color:var(--pencil); }
.chapter-sheet h3 { font-family:var(--serif); font-weight:600; font-size:1.6rem; line-height:1.18; letter-spacing:-.01em; margin:0; }
.chapter-sheet .chapter-headline { font-family:var(--serif); font-style:italic; font-size:1.06rem; color:#3c4540; margin:2px 0 0; }
.chapter-sheet .chapter-summary { font-family:var(--serif); font-size:1.02rem; line-height:1.78; max-width:68ch; margin:18px 0 0; }
.chapter-sheet h4 { font-size:.82rem; font-weight:700; color:var(--olive); margin:26px 0 8px; letter-spacing:0; text-transform:none; }

/* mark positions in 2% steps (the page's CSP allows no inline styles) */
.page-ruler .r0{left:0%} .page-ruler .r2{left:2%} .page-ruler .r4{left:4%} .page-ruler .r6{left:6%} .page-ruler .r8{left:8%} .page-ruler .r10{left:10%} .page-ruler .r12{left:12%} .page-ruler .r14{left:14%} .page-ruler .r16{left:16%} .page-ruler .r18{left:18%} .page-ruler .r20{left:20%} .page-ruler .r22{left:22%} .page-ruler .r24{left:24%} .page-ruler .r26{left:26%} .page-ruler .r28{left:28%} .page-ruler .r30{left:30%} .page-ruler .r32{left:32%} .page-ruler .r34{left:34%} .page-ruler .r36{left:36%} .page-ruler .r38{left:38%} .page-ruler .r40{left:40%} .page-ruler .r42{left:42%} .page-ruler .r44{left:44%} .page-ruler .r46{left:46%} .page-ruler .r48{left:48%} .page-ruler .r50{left:50%} .page-ruler .r52{left:52%} .page-ruler .r54{left:54%} .page-ruler .r56{left:56%} .page-ruler .r58{left:58%} .page-ruler .r60{left:60%} .page-ruler .r62{left:62%} .page-ruler .r64{left:64%} .page-ruler .r66{left:66%} .page-ruler .r68{left:68%} .page-ruler .r70{left:70%} .page-ruler .r72{left:72%} .page-ruler .r74{left:74%} .page-ruler .r76{left:76%} .page-ruler .r78{left:78%} .page-ruler .r80{left:80%} .page-ruler .r82{left:82%} .page-ruler .r84{left:84%} .page-ruler .r86{left:86%} .page-ruler .r88{left:88%} .page-ruler .r90{left:90%} .page-ruler .r92{left:92%} .page-ruler .r94{left:94%} .page-ruler .r96{left:96%} .page-ruler .r98{left:98%} .page-ruler .r100{left:100%}
/* the page ruler: the chapter's pages as a strip, a mark where each point (olive) and term (highlighter) comes from */
.page-ruler { position:relative; height:44px; margin:4px 0 0; }
.page-ruler .ruler-ticks { position:absolute; left:0; right:0; top:16px; height:10px; display:flex; justify-content:space-between;
  align-items:flex-end; border-bottom:1px solid var(--pencil); }
.page-ruler .ruler-ticks i { width:1px; height:5px; background:#b3bba9; }
.page-ruler .ruler-ticks i.is-major { height:10px; background:var(--pencil); }
.page-ruler .ruler-end { position:absolute; top:30px; font-size:.7rem; color:var(--pencil); font-variant-numeric:tabular-nums; }
.page-ruler .ruler-end:last-of-type { right:0; }
.page-ruler a { position:absolute; top:6px; width:12px; height:20px; margin-left:-6px; display:block; }
.page-ruler a::after { content:""; position:absolute; left:3px; top:4px; width:6px; height:16px; background:var(--olive); }
.page-ruler a.is-term::after { left:2px; top:0; width:8px; height:26px; background:var(--marker); outline:1px solid #b9c96a; }
.page-ruler a:hover::after,.page-ruler a:focus-visible::after { background:var(--book-ink); }
.page-ruler a.is-term:hover::after { background:#c9dc62; }
.page-ruler.is-empty .ruler-ticks { opacity:.55; }
.chapter-key { display:flex; flex-wrap:wrap; gap:4px 18px; font-size:.8rem; color:var(--pencil); margin:10px 0 0; }
.chapter-key span::before { content:""; display:inline-block; width:6px; height:11px; margin-right:6px; vertical-align:-1px; background:var(--olive); }
.chapter-key span + span::before { width:8px; background:var(--marker); outline:1px solid #b9c96a; }

/* key points and terms, each with its page in a pencil margin on the right */
.margin-list { list-style:none; margin:0; padding:0; max-width:74ch; }
.margin-list li,.margin-terms > div { display:grid; grid-template-columns:minmax(0,1fr) 4.2rem; gap:18px; align-items:baseline; padding:7px 0;
  border-bottom:1px dotted var(--edge); font-family:var(--serif); font-size:.98rem; line-height:1.6; }
.page-ref { justify-self:end; font-family:"Segoe UI",Arial,sans-serif; font-size:.78rem; font-variant-numeric:tabular-nums; color:var(--pencil);
  text-decoration:none; white-space:nowrap; }
a.page-ref { color:var(--olive); text-decoration:underline; text-underline-offset:3px; }
a.page-ref:hover { color:var(--book-ink); }
.margin-terms { margin:0; max-width:74ch; }
.margin-terms > div { grid-template-areas:"term page" "meaning page"; row-gap:0; }
.margin-terms dt { grid-area:term; font-weight:650; }
.margin-terms .term-page { grid-area:page; justify-self:end; margin:0; }
.margin-terms dt mark { background:linear-gradient(transparent 38%,var(--marker) 38%,var(--marker) 92%,transparent 92%); color:inherit; padding:0 3px; }
.margin-terms dd { grid-area:meaning; margin:0; color:#3c4540; }
.chapter-question { font-family:var(--serif); font-style:italic; font-size:1.04rem; line-height:1.6; max-width:66ch; margin:0;
  padding:4px 0 4px 16px; border-left:3px solid var(--olive); }
.chapter-sheet > footer { display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; margin-top:26px; padding-top:16px; border-top:1px solid var(--edge); }
.chapter-sheet > footer .button { background:var(--olive); min-height:40px; padding:9px 16px; font-size:.82rem; }
.chapter-sheet > footer .button:hover { background:var(--book-ink); }
.chapter-sheet > footer a:not(.button) { color:var(--olive); font-size:.84rem; font-weight:600; }
.chapter-sheet > footer .chapter-by { margin-left:auto; font-size:.74rem; color:var(--pencil); }
.chapter-sheet.is-waiting { background:transparent; box-shadow:none; border-style:dashed; }
.chapter-sheet.is-waiting .chapter-summary { color:var(--pencil); font-style:italic; }

/* ---------- the page reader, the Contents and the Glossary ---------- */
.teach-book .teach-page-head { max-width:52rem; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px 30px; align-items:end; margin-bottom:8px; }
.teach-book .teach-page-head .book-kind { grid-column:1 / -1; font-size:.86rem; color:var(--pencil); margin:0; }
.teach-book .teach-page-head h1 { font-family:var(--serif); font-weight:600; font-size:clamp(1.9rem,4vw,2.7rem); letter-spacing:-.015em; margin:0; }
.teach-book .teach-page-head .teach-jump { margin:0; }
.teach-book .teach-page-head .teach-jump input { background:var(--sheet); border-color:var(--edge); }
.teach-book .teach-page-head .teach-jump button { background:var(--olive); border-color:var(--olive); }
.teach-book .teach-chapter-back { grid-column:1 / -1; margin:6px 0 0; font-size:.88rem; }
.teach-book .teach-chapter-back a { color:var(--olive); font-weight:650; }
.teach-book .teach-pager { border-color:var(--edge); max-width:52rem; }
.teach-book .teach-pager a { color:var(--olive); }
.teach-book .teach-count { color:var(--pencil); font-variant-numeric:tabular-nums; }
.teach-book .teach-page { max-width:52rem; padding:48px 56px; font-family:var(--serif); font-size:1.06rem; line-height:1.8; }
.teach-book .teach-page p + p { margin-top:16px; }
.teach-book .teach-intro { max-width:52rem; border-top:3px solid var(--olive); }
.teach-book .teach-intro-text .eyebrow { color:var(--olive); letter-spacing:.04em; text-transform:none; font-size:.82rem; }
.teach-book .teach-editbar { max-width:52rem; }
.teach-book .teach-cliffy-link { max-width:52rem; background:var(--sheet); color:var(--book-ink); border:1px solid var(--edge); border-left:4px solid var(--marker);
  padding:20px 26px; }
.teach-book .teach-cliffy-link .eyebrow { color:var(--olive); letter-spacing:.04em; text-transform:none; font-size:.82rem; }
.teach-book .teach-cliffy-link p:not(.eyebrow) { color:#3c4540; }
.teach-book .teach-cliffy-link .button { background:var(--olive); color:#fff; }
.teach-book .teach-cliffy-link .button:hover { background:var(--book-ink); }
.teach-book .teach-credit { max-width:52rem; color:var(--pencil); }
.teach-book .teach-toc { font-family:var(--serif); }
.teach-book .teach-toc li { border-bottom-color:var(--edge); align-items:baseline; }
.teach-book .teach-toc li span { font-family:"Segoe UI",Arial,sans-serif; color:var(--pencil); font-variant-numeric:tabular-nums; }
.teach-book .teach-note { max-width:52rem; padding:40px 48px; border-top:1px solid var(--edge); }
.teach-book .teach-glossary h2 { font-family:var(--serif); font-weight:600; border-bottom:1px solid var(--edge); color:var(--olive); }
.teach-book .teach-glossary dt { font-family:var(--serif); }
.teach-book .teach-glossary dt::first-line { background:var(--marker); }
.teach-book .teach-glossary dd { font-family:var(--serif); color:#3c4540; }
.teach-book .teach-glossary dd a { color:var(--olive); }
.teach-book .teach-letters a { border-color:var(--edge); background:var(--sheet); color:var(--olive); }
.teach-book .teach-summary { font-family:var(--serif); }


/* ---------- the library home (index.html) ---------- */
.teach-home { color:var(--book-ink); }
.home-desk h1,.home-desk h2,.home-desk h3 { font-family:var(--serif); font-weight:600; letter-spacing:-.015em; }
.home-hero { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:56px; align-items:center; padding-block:64px 56px;
  border-bottom:1px solid var(--edge); }
.home-hero .book-kind { font-size:.9rem; color:var(--pencil); margin:0 0 14px; }
.home-hero h1 { font-size:clamp(2.5rem,5.4vw,4.1rem); line-height:1.04; color:var(--book-ink); font-variation-settings:"opsz" 72; margin:0; max-width:15ch; }
.home-lead { font-family:var(--serif); font-size:1.12rem; line-height:1.72; color:#3c4540; max-width:54ch; margin:22px 0 0; }
.home-actions { display:flex; flex-wrap:wrap; align-items:center; gap:14px 26px; margin-top:28px; }
.home-actions .button { background:var(--olive); min-height:48px; gap:12px; font-size:.88rem; }
.home-actions .button:hover { background:var(--book-ink); }
.home-actions a:not(.button) { color:var(--olive); font-weight:650; font-size:.9rem; }
.home-invite { margin-top:18px; font-size:.84rem; color:var(--pencil); }
/* the hero's drawing: a chapter note's page ruler, with grey bars standing in for the text */
.home-specimen { margin:0; display:grid; gap:16px; }
.specimen-sheet { padding:26px 30px 22px; transform:rotate(-1.2deg); }
.specimen-sheet .chapter-label { font-size:.78rem; color:var(--pencil); margin:0 0 8px; }
.specimen-title span { display:block; width:62%; height:18px; background:var(--book-ink); opacity:.85; margin-bottom:22px; }
.specimen-sheet .page-ruler a { pointer-events:none; }
.specimen-lines { list-style:none; margin:14px 0 0; padding:0; }
.specimen-lines li { display:grid; grid-template-columns:minmax(0,1fr) 3.6rem; gap:16px; align-items:center; padding:9px 0; border-bottom:1px dotted var(--edge); }
.specimen-lines span { display:block; height:9px; background:#c9cfc2; }
.specimen-lines li:nth-child(2) span { width:84%; }
.specimen-lines li:nth-child(3) span { width:70%; }
.specimen-lines b { justify-self:end; font-weight:400; font-size:.76rem; color:var(--olive); text-decoration:underline; text-underline-offset:3px; }
.home-specimen figcaption { display:grid; gap:4px; font-size:.82rem; color:var(--pencil); padding-left:14px; border-left:2px solid var(--marker); }
.home-section { padding-block:56px; border-bottom:1px solid var(--edge); }
.home-section:last-of-type { border-bottom:0; }
.home-heading { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:14px 56px; align-items:baseline; margin-bottom:28px; }
.home-heading h2 { font-size:clamp(1.8rem,3.2vw,2.4rem); margin:0; color:var(--book-ink); }
.home-heading p { color:#3c4540; font-size:.95rem; line-height:1.75; max-width:62ch; }
/* the shelves: index tabs above a sheet */
.teach-home .teach-tablist { gap:4px; border-bottom:0; }
.teach-home .teach-tablist [role="tab"] { border-radius:0; border:1px solid var(--edge); border-bottom:0; background:#dfe3d8; color:var(--book-ink);
  font-size:.86rem; padding:10px 18px; }
.teach-home .teach-tablist [role="tab"][aria-selected="true"] { background:var(--sheet); color:var(--book-ink); border-color:var(--edge);
  box-shadow:inset 0 3px 0 var(--olive); position:relative; z-index:1; margin-bottom:-1px; padding-bottom:11px; }
.teach-home .teach-tablist [role="tab"]:hover:not([aria-selected="true"]) { background:#eef0e9; }
.teach-home .teach-tablist .teach-tag { letter-spacing:0; text-transform:none; font-variant-numeric:tabular-nums; color:var(--pencil); }
.teach-home .teach-panel { background:var(--sheet); border:1px solid var(--edge); padding:28px 30px; }
.teach-home .teach-shelf-note { color:#3c4540; }
.teach-home .teach-shelf-note a { color:var(--olive); }
.teach-home .teach-card { background:var(--desk); border:1px solid var(--edge); border-top:3px solid var(--olive); padding:20px 22px; gap:10px; }
.teach-home .teach-card .book-kind { font-size:.8rem; color:var(--pencil); margin:0; }
.teach-home .teach-card h3 { font-size:1.3rem; }
.teach-home .teach-card h3 a { color:var(--book-ink); text-decoration:none; }
.teach-home .teach-card h3 a:hover { color:var(--olive); text-decoration:underline; }
.teach-home .teach-card > p:not(.book-kind):not(.teach-muted):not(.teach-credit) { font-family:var(--serif); color:#3c4540; font-size:.94rem; line-height:1.65; }
.teach-home .teach-card .button { background:var(--olive); min-height:40px; padding:9px 16px; font-size:.82rem; }
.teach-home .teach-card .button:hover { background:var(--book-ink); }
.teach-home .teach-card .text-link,.teach-home .teach-card details summary { color:var(--olive); }
.teach-home .teach-panel-chapters a { color:var(--book-ink); }
/* the upload form and the staff's boxes, as sheets */
.teach-home .teach-upload { margin-top:0; background:var(--sheet); border-color:var(--edge); border-radius:0; padding:26px 30px; max-width:40rem; }
.teach-home .teach-upload label { color:var(--book-ink); }
.teach-home .teach-upload input[type="file"] { color:var(--book-ink); }
.teach-home .teach-upload a { color:var(--olive); }
.teach-home .teach-upload .form-status { color:var(--olive); }
.teach-home .teach-upload .teach-muted { color:var(--pencil); }
.teach-home .teach-upload button { background:var(--olive); border-color:var(--olive); color:#fff; }
.teach-home .teach-upload button:hover { background:var(--book-ink); }
.teach-home .teach-upload select,.teach-home .teach-manage-box input { background:#fff; border-color:#b9c0b0; }
.teach-home .teach-manage-box { background:var(--sheet); border-color:var(--edge); }
.teach-home .teach-manage-box h3 { font-size:1.25rem; }
.teach-home .teach-manage-box button,.teach-home .teach-rows button:not(.teach-danger) { background:var(--olive); border-color:var(--olive); }
.teach-home .teach-rows li { border-color:var(--edge); }
/* how it works: three steps in order */
.home-steps { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:30px; counter-reset:step; }
.home-steps li { counter-increment:step; border-top:1px solid var(--book-ink); padding-top:16px; }
.home-steps li::before { content:counter(step); display:block; font-family:var(--serif); font-size:2.6rem; line-height:1; color:var(--olive);
  font-variant-numeric:lining-nums; margin-bottom:12px; }
.home-steps h3 { font-size:1.2rem; margin:0 0 8px; }
.home-steps p { color:#3c4540; font-size:.92rem; line-height:1.75; }
@media (max-width:900px) {
  .home-hero { grid-template-columns:1fr; gap:36px; padding-block:44px 40px; }
  .home-heading { grid-template-columns:1fr; }
  .home-steps { grid-template-columns:1fr; gap:24px; }
}
@media (max-width:640px) {
  .specimen-sheet { padding:20px 18px 16px; transform:none; }
  .teach-home .teach-panel,.teach-home .teach-upload { padding:20px 16px; }
  .home-section { padding-block:42px; }
}
@media (prefers-reduced-motion:reduce) { .specimen-sheet { transform:none; } }

/* ---------- a phone ---------- */
@media (max-width:900px) {
  .book-title { grid-template-columns:1fr; }
  .study-desk { grid-template-columns:1fr; gap:26px; }
  .desk-index { position:static; max-height:none; overflow:visible; }
  .desk-index ol { columns:2 15rem; column-gap:22px; }
  .desk-index li { break-inside:avoid; }
}
@media (max-width:640px) {
  .chapter-sheet { padding:22px 18px 18px; }
  .chapter-sheet h3 { font-size:1.35rem; }
  .margin-list li,.margin-terms > div { grid-template-columns:minmax(0,1fr) 3.4rem; gap:10px; font-size:.95rem; }
  .chapter-sheet > footer .chapter-by { margin-left:0; width:100%; }
  .teach-book .teach-page { padding:26px 20px; font-size:1rem; }
  .teach-book .teach-note { padding:24px 18px; }
  .teach-book .teach-page-head { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) { .teach-book * { scroll-behavior:auto; } }
/*##############################################################################
# End of book.css
##############################################################################*/
