:root{--ctp-green:#3f7f55;--ctp-green-dark:#244b35;--ctp-green-light:#e9f1e8;--ctp-cream:#f8faf5;--ctp-gold:#c4a25a;--ctp-text:#26352c;--ctp-muted:#68756d}
body{background:var(--ctp-cream);color:var(--ctp-text)}
.library-header{background:rgba(248,250,245,.97);box-shadow:0 6px 30px rgba(36,75,53,.06)}
.ctp-brand{font-size:28px;font-weight:850;color:var(--ctp-green-dark);line-height:.8;text-decoration:none}.ctp-brand small{display:block;margin-top:8px;font-size:9px;letter-spacing:.14em;color:var(--ctp-green)}
.library-nav a{color:var(--ctp-green-dark);font-weight:700;text-decoration:none;margin-left:22px}.library-nav a:hover{color:var(--ctp-green)}
.library-hero{padding:155px 0 80px;background:linear-gradient(120deg,#173323,#3f7f55);color:#fff}.library-hero h1{font-size:clamp(44px,7vw,82px);line-height:1}.library-hero p{max-width:700px;font-size:19px;color:rgba(255,255,255,.8)}
.library-section{padding:80px 0}.soft-section{background:var(--ctp-green-light)}
.ctp-kicker{font-size:12px;letter-spacing:.13em;text-transform:uppercase;font-weight:850;color:var(--ctp-green)}
.ctp-heading{font-size:clamp(34px,5vw,58px);line-height:1.05;color:var(--ctp-green-dark)}
.filter-bar{background:#fff;padding:18px;border-radius:22px;box-shadow:0 16px 45px rgba(36,75,53,.07)}
.form-control,.form-select{border:1px solid #dfe8e1;border-radius:14px;padding:13px 15px}.form-control:focus,.form-select:focus{border-color:var(--ctp-green);box-shadow:0 0 0 .22rem rgba(63,127,85,.12)}
.btn-ctp{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:50px;padding:13px 23px;background:var(--ctp-green);color:#fff;font-weight:800;text-decoration:none}.btn-ctp:hover{background:var(--ctp-green-dark);color:#fff}.btn-ctp-outline{background:transparent;border:1px solid var(--ctp-green);color:var(--ctp-green)}.btn-ctp-outline:hover{background:var(--ctp-green);color:#fff}.btn-ctp-light{background:#fff;color:var(--ctp-green-dark)}
.content-card{height:100%;background:#fff;border-radius:24px;overflow:hidden;border:1px solid rgba(63,127,85,.10);transition:.25s;box-shadow:0 15px 40px rgba(36,75,53,.06)}.content-card:hover{transform:translateY(-6px);box-shadow:0 24px 55px rgba(36,75,53,.12)}
.content-cover{position:relative;height:235px;background:#dfeadf;overflow:hidden}.content-cover img{width:100%;height:100%;object-fit:cover}.content-placeholder{height:100%;display:grid;place-items:center;font-size:56px;color:var(--ctp-green)}
.content-badge{position:absolute;top:16px;left:16px;border-radius:50px;padding:7px 12px;background:#fff;font-size:12px;font-weight:850;color:var(--ctp-green-dark)}.content-price{position:absolute;right:16px;bottom:16px;background:var(--ctp-green-dark);color:#fff;padding:8px 13px;border-radius:50px;font-weight:850}
.content-body{padding:26px}.content-meta{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ctp-green);font-weight:850}.content-body h3{font-size:25px;color:var(--ctp-green-dark);margin:10px 0}.content-body p{color:var(--ctp-muted);min-height:52px}.content-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.auth-visual{background:linear-gradient(rgba(23,51,35,.55),rgba(23,51,35,.82)),url('../images/hero-bg.jpg') center/cover;display:flex;align-items:flex-end;padding:70px;color:#fff}.auth-visual h1{font-size:58px}.auth-panel{display:flex;align-items:center;padding:60px}.auth-card{width:100%;max-width:520px;margin:auto}.auth-card h1{color:var(--ctp-green-dark);font-size:44px}.auth-note{color:var(--ctp-muted)}
.dashboard-hero{padding:135px 0 55px;background:var(--ctp-green-light)}.profile-chip{display:inline-flex;align-items:center;gap:10px;background:#fff;padding:10px 15px;border-radius:50px}.profile-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--ctp-green);color:#fff;font-weight:850}
.viewer-shell{padding:130px 0 70px}.viewer-card{background:#fff;border-radius:28px;padding:28px;box-shadow:0 18px 55px rgba(36,75,53,.08)}.viewer-frame{width:100%;min-height:640px;border:0;border-radius:18px;background:#101511}.viewer-media{width:100%;border-radius:18px;background:#101511}.viewer-info{padding:25px 0 0}
.payment-overlay{position:fixed;inset:0;background:rgba(15,30,20,.74);display:grid;place-items:center;z-index:9999;padding:20px}.payment-box{max-width:480px;width:100%;background:#fff;border-radius:28px;padding:38px;text-align:center}.payment-countdown{width:125px;height:125px;border-radius:50%;margin:25px auto;display:grid;place-items:center;border:8px solid var(--ctp-green-light);font-size:33px;font-weight:900;color:var(--ctp-green-dark)}
.admin-layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.admin-sidebar{background:#173323;color:#fff;padding:30px 22px;position:sticky;top:0;height:100vh}.admin-sidebar a{display:block;color:#d7e5da;text-decoration:none;padding:13px 16px;border-radius:12px;margin:4px 0}.admin-sidebar a:hover,.admin-sidebar a.active{background:rgba(255,255,255,.1);color:#fff}.admin-main{padding:40px}.stat-card{background:#fff;border-radius:20px;padding:24px;border:1px solid #e7eee8}.admin-table{background:#fff;border-radius:20px;overflow:hidden}.modal-content{border:0;border-radius:24px}
.empty-state{text-align:center;padding:70px 20px;background:#fff;border-radius:24px;color:var(--ctp-muted)}
.loading-grid{display:grid;place-items:center;min-height:260px}.spinner-ctp{width:48px;height:48px;border-radius:50%;border:5px solid var(--ctp-green-light);border-top-color:var(--ctp-green);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:991px){.auth-shell{grid-template-columns:1fr}.auth-visual{display:none}.auth-panel{padding:100px 24px 45px}.admin-layout{grid-template-columns:1fr}.admin-sidebar{height:auto;position:static}.admin-main{padding:25px}.library-nav{display:none}.viewer-frame{min-height:480px}}
@media(max-width:575px){.library-hero{padding-top:125px}.content-cover{height:210px}.auth-card h1{font-size:36px}.viewer-card{padding:15px}.viewer-frame{min-height:420px}.payment-box{padding:28px 20px}}
