/* PHP/Hostia layer: portal, forms and compact PDF library. */
.portal-nav{position:relative;z-index:20;background:#fbfaf6}
.portal-nav .nav-login{white-space:nowrap}
.lesson-list article{align-items:center}
.lesson-list article form{margin-left:auto}
.lesson-check{border:1px solid #cba160;background:transparent;color:#102542;padding:11px 16px;cursor:pointer;white-space:nowrap;font:600 12px Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.lesson-check:hover,.lesson-completed .lesson-check{background:#102542;color:#fff;border-color:#102542}
.lesson-completed{background:#f2f6f3}
.lesson-completed h3{color:#56705f}
.auth-body{min-height:100vh;background:#edf3f5;color:#102542}
.auth-card{width:min(560px,calc(100% - 40px));margin:70px auto;padding:54px;background:#fff;border:1px solid #d7dfe2;box-shadow:0 25px 70px rgba(16,37,66,.1)}
.auth-card h1{font:52px/1.05 Georgia,serif;margin:16px 0 18px}
.auth-card>p{color:#607084;line-height:1.65}
.auth-card form,.admin-form{display:grid;gap:18px;margin-top:30px}
.auth-card label,.admin-form label,.upload-panel label{display:grid;gap:8px;color:#516176;font:600 12px Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
.auth-card input,.admin-form input,.admin-form select,.upload-panel input:not([type=file]){width:100%;box-sizing:border-box;border:1px solid #ccd6db;background:#fff;padding:14px 15px;color:#102542;font:16px Arial,sans-serif;text-transform:none;letter-spacing:0}
.auth-card .button,.admin-form .button{border:0;cursor:pointer;justify-content:center}
.auth-back{display:inline-block;margin-top:24px;color:#607084}
.form-error,.form-success{padding:13px 15px;font:14px/1.45 Arial,sans-serif}
.form-error{background:#fff0ec;color:#8a3327;border-left:3px solid #b74b3b}
.form-success{background:#edf7ef;color:#29603a;border-left:3px solid #4e8b60}
.install-card code{background:#edf3f5;padding:2px 6px}
.admin-page{background:#f7f5ef;min-height:100vh;padding-bottom:90px}
.admin-head{padding:70px max(6vw,24px) 35px}
.admin-head h1{font:clamp(42px,6vw,78px)/1 Georgia,serif;margin:15px 0}
.admin-head p{max-width:760px;color:#607084;line-height:1.6}
.admin-grid{display:grid;grid-template-columns:minmax(300px,.75fr) 1.25fr;gap:30px;padding:0 max(6vw,24px)}
.admin-form,.users-list{background:#fff;border:1px solid #ddd7ca;padding:32px}
.admin-form h2,.users-list h2{font:28px Georgia,serif;margin:0 0 18px}
.users-list article{display:flex;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid #e6e0d5}
.users-list article div{display:grid;gap:5px}
.users-list article span,.users-list article small{color:#607084}
.users-list article{flex-wrap:wrap}
.module-access-form{flex:0 0 100%;display:flex;flex-wrap:wrap;gap:10px 18px;padding-top:14px;border-top:1px solid #e6e0d5}
.module-access-form>b{flex:0 0 100%}
.module-access-form label{display:flex;align-items:center;gap:7px;color:#445970}
.module-access-form input{width:auto}
.module-access-form button{margin-left:auto}
.library-page .library-hero{padding-top:72px;padding-bottom:42px}
.library-page .library-hero h1{font-size:clamp(42px,6vw,78px);line-height:.98}
.library-page .book-collection{padding-top:34px}
.library-page .book-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.library-page .book-card{padding:12px;min-width:0}
.library-page .book-cover{position:relative;overflow:hidden;min-height:0;padding:0;aspect-ratio:7/10;background:#ece8df}
.library-page .book-cover img{display:block;width:100%;height:100%;object-fit:contain;object-position:top center;background:#fff;transition:transform .35s ease}
.library-page .pdf-auto-cover{display:block;width:100%;height:100%;object-fit:contain;background:#fff}
.library-page .pdf-auto-cover.cover-failed{background:linear-gradient(145deg,#f5ecd9,#dce6ef)}
.library-page .book-card:hover .book-cover img{transform:scale(1.015)}
.library-page .reader-badge{position:absolute;left:10px;bottom:10px;padding:7px 9px;background:rgba(16,37,66,.9);color:#fff;font:600 9px Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.library-page .book-card h3{font-size:18px;line-height:1.15;margin:13px 0 6px}
.library-page .book-card>p{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reader-shelf{margin-top:30px}
.reader-shelf+.reader-shelf{margin-top:58px;padding-top:44px;border-top:1px solid #d8d1c5}
.reader-shelf-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:22px}
.reader-shelf-head>div>span{color:#a16e27;font:600 10px Arial,sans-serif;text-transform:uppercase;letter-spacing:.13em}
.reader-shelf-head h3{margin:7px 0 0;color:#102542;font:34px/1 Georgia,serif}
.reader-shelf-head p{max-width:440px;margin:0;color:#607084;font:14px/1.5 Arial,sans-serif;text-align:right}
.library-access-note{display:flex;justify-content:space-between;gap:25px;align-items:center;margin:0 max(6vw,24px) 80px;padding:24px 28px;background:#102542;color:#fff}
.library-access-note a{color:#e4b763}
.upload-panel input[type=file]{max-width:100%}
.upload-panel select{width:100%;box-sizing:border-box;border:1px solid #ccd6db;background:#fff;padding:14px 15px;color:#102542;font:16px Arial,sans-serif}
.library-admin-button{align-self:center;white-space:nowrap}
.empty-shelf{padding:24px;border:1px dashed #c9c1b4;color:#607084;text-align:center}
.admin-wide{max-width:1500px;margin:auto}
.admin-head .button{display:inline-flex;margin-top:14px}
.admin-list{display:grid;gap:18px}
.admin-upload-book{padding:0 max(6vw,24px) 34px}
.admin-upload-book .admin-form{max-width:920px;margin:0}
.admin-item{display:flex;gap:24px;background:#fff;border:1px solid #ddd7ca;padding:24px;color:#102542;text-decoration:none}
.admin-item>img{width:150px;height:210px;object-fit:contain;background:#f0eee8;border:1px solid #e0dbd0}
.admin-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;flex:1}
.admin-edit-grid label{display:grid;gap:7px;color:#516176;font:600 11px Arial,sans-serif;text-transform:uppercase;letter-spacing:.07em}
.admin-edit-grid input,.admin-edit-grid textarea,.admin-form textarea{width:100%;box-sizing:border-box;border:1px solid #ccd6db;background:#fff;padding:12px 14px;color:#102542;font:15px/1.45 Arial,sans-serif;text-transform:none;letter-spacing:0}
.admin-edit-grid textarea{resize:vertical}
.admin-edit-grid label:nth-child(3),.admin-edit-grid .admin-actions,.admin-item-title{grid-column:1/-1}
.check-line{display:flex!important;align-items:center;grid-template-columns:auto 1fr!important;text-transform:none!important}
.check-line input{width:auto!important}
.admin-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.button.danger{background:#8d352c;color:#fff;border:0;cursor:pointer}
.button.secondary{border:1px solid #b8c4ca;background:#fff;color:#102542}
.admin-item-title{display:flex;justify-content:space-between;gap:18px}
.admin-item-title span{color:#607084}
.lesson-admin-link{align-items:center}
.lesson-admin-link>span{font:30px Georgia,serif;color:#c58b37}
.lesson-admin-link>div{display:grid;gap:6px;flex:1}
.lesson-admin-link small{color:#607084}
.lesson-admin-link i{font-style:normal;color:#a16e27}
.lesson-editor{display:grid;grid-template-columns:1.25fr .75fr;gap:28px;padding:0 max(6vw,24px)}
.material-admin-list{display:grid;gap:10px;margin-top:18px}
.material-admin-list form{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;background:#fff;border:1px solid #ddd7ca;padding:15px}
.text-danger{border:0;background:transparent;color:#9c3027;cursor:pointer}
.lesson-view{width:min(1040px,calc(100% - 40px));margin:60px auto 100px}
.lesson-view>.section-kicker{display:block;margin-top:30px}
.lesson-view h1{font:clamp(42px,6vw,72px)/1.02 Georgia,serif;margin:12px 0 32px}
.lesson-video{position:relative;background:#102542;margin:30px 0;aspect-ratio:16/9;display:grid;place-items:center}
.lesson-video iframe,.lesson-video video{position:absolute;inset:0;width:100%;height:100%;border:0}
.lesson-copy{font:19px/1.75 Arial,sans-serif;color:#445970;max-width:850px;margin:38px 0;white-space:normal}
.lesson-materials{margin:40px 0;padding:30px;background:#edf3f5}
.lesson-materials h2{font:32px Georgia,serif}
.lesson-materials a{display:flex;justify-content:space-between;gap:20px;padding:17px 0;border-top:1px solid #ccd6db;color:#102542;text-decoration:none}
.admin-edit-lesson{display:inline-flex;margin:-10px 0 24px}
.additional-video{margin:42px 0}
.additional-video h2{font:30px/1.15 Georgia,serif;color:#102542}
.faq article p{display:none}
.faq article.open p{display:block}
@media(max-width:1100px){
  .library-page .book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){
  .portal-nav nav{display:none}
  .portal-nav{padding-inline:20px}
  .admin-grid{grid-template-columns:1fr}
  .lesson-editor{grid-template-columns:1fr}
  .admin-edit-grid{grid-template-columns:1fr}
  .admin-edit-grid>*{grid-column:1!important}
  .lesson-list article{align-items:flex-start}
  .lesson-list article form{margin:12px 0 0}
  .library-page .book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reader-shelf-head{align-items:flex-start;flex-direction:column;gap:10px}
  .reader-shelf-head p{text-align:left}
}
@media(max-width:520px){
  .auth-card{padding:32px 24px;margin:35px auto}
  .auth-card h1{font-size:40px}
  .library-page .book-grid{grid-template-columns:1fr 1fr;gap:10px}
  .library-page .book-card h3{font-size:15px}
  .library-access-note{align-items:flex-start;flex-direction:column}
  .book-admin-item{display:grid}
  .admin-item>img{width:110px;height:155px}
  .material-admin-list form{grid-template-columns:1fr}
}
