/* ═══════════════════════════════════════════════════
   PhotoPro Academy — Guard: Auth + Content Protection
   ═══════════════════════════════════════════════════ */

/* ─── Auth bar (injected into topbar) ─── */
.g-auth{position:fixed;top:8px;right:16px;z-index:1000;display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:.78rem;background:var(--s1,#181926);border:1px solid var(--brd,#2a2d3e);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.g-btn{background:var(--blue,#4a7dff);color:#fff;border:none;border-radius:6px;padding:6px 16px;font-size:.8rem;cursor:pointer;font-weight:600;transition:opacity .2s}
.g-btn:hover{opacity:.85}
.g-btn-out{background:transparent;border:1px solid var(--t4,#555);color:var(--t2,#aaa);padding:5px 12px}
.g-btn-out:hover{border-color:var(--t2,#aaa)}
.g-user-name{color:var(--t2,#bbb);font-size:.78rem}

/* ─── Login modal ─── */
.g-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:9999;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);opacity:0;transition:opacity .3s;pointer-events:none}
.g-modal-bg.open{opacity:1;pointer-events:all}
.g-modal{background:var(--s2,#1e2030);border:1px solid var(--brd,#2a2d3e);border-radius:16px;padding:32px;width:380px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.g-modal h3{margin:0 0 8px;font-size:1.1rem;color:var(--t,#eee)}
.g-modal p{margin:0 0 20px;font-size:.82rem;color:var(--t3,#888)}
.g-modal label{display:block;font-size:.75rem;color:var(--t3,#888);margin-bottom:6px;text-transform:uppercase;letter-spacing:1px}
.g-modal input{width:100%;box-sizing:border-box;background:var(--s3,#262838);border:1px solid var(--brd,#2a2d3e);border-radius:8px;padding:10px 14px;color:var(--t,#eee);font-size:.9rem;outline:none;transition:border-color .2s}
.g-modal input:focus{border-color:var(--blue,#4a7dff)}
.g-modal .g-btn{width:100%;margin-top:16px;padding:10px}
.g-modal .g-btn:disabled{opacity:.4;cursor:not-allowed}
.g-modal .g-error{color:var(--red,#ff5c5c);font-size:.78rem;margin-top:8px;min-height:1.2em}
.g-modal .g-switch{text-align:center;margin-top:14px;font-size:.78rem;color:var(--t4,#666)}
.g-modal .g-switch a{color:var(--blue,#4a7dff);cursor:pointer;text-decoration:none}
.g-modal .g-close{position:absolute;top:12px;right:16px;background:none;border:none;color:var(--t4,#666);font-size:1.3rem;cursor:pointer;padding:4px 8px}
.g-modal .g-close:hover{color:var(--t,#eee)}
.g-otp-input{text-align:center;font-size:1.5rem!important;letter-spacing:8px;font-family:monospace}
.g-timer{text-align:center;font-size:.75rem;color:var(--t4,#666);margin-top:8px}

/* ─── Content protection: blur ─── */
.g-locked{position:relative;overflow:hidden;margin-top:12px;min-height:120px}
.g-blur-text{filter:blur(5px);-webkit-filter:blur(5px);user-select:none;-webkit-user-select:none;pointer-events:none;line-height:1.7;color:var(--t3,#888);font-size:.9rem;word-break:break-word}
.g-lock-overlay{position:absolute;inset:0;background:linear-gradient(transparent 0%,var(--s1,rgba(20,21,28,.6)) 30%,var(--s1,rgba(20,21,28,.97)) 70%);display:flex;align-items:center;justify-content:center}
.g-lock-box{text-align:center;color:var(--t3,#888);padding:20px}
.g-lock-box svg{margin-bottom:8px;opacity:.5}
.g-lock-box p{margin:0;font-size:.85rem}
.g-lock-box .g-btn,.g-buy-btn{margin-top:12px;font-size:.82rem;padding:8px 24px;background:linear-gradient(135deg,#4a7dff 0%,#7c3aed 100%);border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:700;transition:transform .15s,box-shadow .15s;box-shadow:0 4px 15px rgba(74,125,255,.3)}
.g-buy-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(74,125,255,.4)}

/* Purchase modal courses list */
.g-course-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .15s;font-size:.84rem}
.g-course-row:hover{background:var(--s3,#262838)}
.g-course-row.owned{opacity:.5;cursor:default}
.g-course-row.owned:hover{background:transparent}
.g-course-row input[type="checkbox"]{width:18px;height:18px;accent-color:var(--blue,#4a7dff);cursor:pointer;flex-shrink:0}
.g-course-check{color:var(--green,#34d399);font-size:1rem;width:18px;text-align:center;flex-shrink:0}
.g-course-name{flex:1}
.g-course-price{color:var(--t2,#bbb);font-size:.82rem;font-weight:600;white-space:nowrap}
.g-course-tag{font-size:.7rem;color:var(--green,#34d399);background:rgba(52,211,153,.1);padding:2px 8px;border-radius:4px}
.g-bundle-row{background:var(--s3,#262838);border:1px dashed var(--blue,#4a7dff);margin-top:8px;border-radius:8px}
.g-bundle-price{color:var(--blue,#4a7dff)!important;font-weight:700}
.g-purchase label{margin-bottom:4px}

/* ─── Buy banner (bottom of locked pages) ─── */
.g-buy-banner{margin:32px 0;padding:28px;background:linear-gradient(135deg,rgba(74,125,255,.08) 0%,rgba(124,58,237,.08) 100%);border:1px solid rgba(74,125,255,.2);border-radius:16px;text-align:center}
.g-buy-banner-inner{display:flex;align-items:center;justify-content:center;gap:24px;flex-wrap:wrap}
.g-buy-banner-title{font-size:1.1rem;font-weight:700;color:var(--t,#eee);margin-bottom:4px}
.g-buy-banner-sub{font-size:.82rem;color:var(--t3,#888)}
.g-buy-banner-btn{font-size:.9rem!important;padding:12px 32px!important}
@media(max-width:768px){.g-buy-banner-inner{flex-direction:column;text-align:center}}

/* Table value blur (for locked pages) */
.g-val-hidden{filter:blur(5px);-webkit-filter:blur(5px);user-select:none;-webkit-user-select:none;display:inline-block}

/* ─── Feedback (like/dislike/comment) ─── */
.g-fb{border-top:1px solid var(--brd,#2a2d3e);margin-top:20px;padding-top:14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.g-fb-btn{background:var(--s3,#262838);border:1px solid var(--brd,#2a2d3e);border-radius:8px;padding:5px 14px;cursor:pointer;color:var(--t3,#888);font-size:.82rem;display:inline-flex;align-items:center;gap:5px;transition:all .2s}
.g-fb-btn:hover{border-color:var(--t4,#555);color:var(--t2,#bbb)}
.g-fb-btn.active-like{border-color:var(--green,#34d399);color:var(--green,#34d399);background:rgba(52,211,153,.08)}
.g-fb-btn.active-dislike{border-color:var(--red,#ff5c5c);color:var(--red,#ff5c5c);background:rgba(255,92,92,.08)}
.g-fb-btn svg{width:16px;height:16px}
.g-fb-comment-btn{background:none;border:none;color:var(--t4,#666);cursor:pointer;font-size:.78rem;padding:4px 8px}
.g-fb-comment-btn:hover{color:var(--blue,#4a7dff)}
.g-fb-form{width:100%;margin-top:6px}
.g-fb-form textarea{width:100%;box-sizing:border-box;background:var(--s3,#262838);border:1px solid var(--brd,#2a2d3e);border-radius:8px;padding:10px;color:var(--t,#eee);font-size:.82rem;resize:vertical;min-height:60px;outline:none;font-family:inherit}
.g-fb-form textarea:focus{border-color:var(--blue,#4a7dff)}
.g-fb-form .g-fb-actions{display:flex;gap:8px;margin-top:6px;justify-content:flex-end}
.g-fb-form .g-btn{width:auto;padding:5px 14px;font-size:.75rem}
.g-fb-saved{color:var(--green,#34d399);font-size:.75rem;margin-left:auto}

/* ─── Teacher marks ─── */
.g-teacher-mark{background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.2);border-radius:10px;padding:12px 16px;margin:14px 0}
.g-mark-header{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;color:var(--purple,#a855f7)}
.g-mark-header svg{flex-shrink:0;color:var(--purple,#a855f7)}
.g-mark-grade{font-size:.9rem;font-weight:800;padding:2px 10px;border-radius:6px;margin-left:auto}
.g-mark-grade.excellent{background:rgba(52,211,153,.15);color:var(--green)}
.g-mark-grade.good{background:rgba(74,125,255,.15);color:var(--blue)}
.g-mark-grade.satisfactory{background:rgba(245,158,11,.15);color:var(--orange)}
.g-mark-grade.needs-work{background:rgba(255,92,92,.15);color:var(--red)}
.g-mark-comment{font-size:.84rem;color:var(--t2,#bbb);margin-top:8px;line-height:1.5;white-space:pre-wrap}
.g-mark-teacher{font-size:.7rem;color:var(--t4,#666);margin-top:6px}

/* ─── Study journal ─── */
.g-journal{margin:32px 0;border:1px solid var(--brd,#2a2d3e);border-radius:12px;overflow:hidden}
.g-journal-toggle{display:flex;align-items:center;gap:8px;padding:14px 20px;font-size:.88rem;font-weight:600;color:var(--t2,#bbb);cursor:pointer;background:var(--s1,#181926);transition:background .2s}
.g-journal-toggle:hover{background:var(--s2,#1e2030)}
.g-journal-toggle svg{flex-shrink:0;color:var(--blue,#4a7dff)}
.g-journal-count{font-size:.7rem;background:var(--blue,#4a7dff);color:#fff;border-radius:10px;padding:1px 7px;margin-left:4px}
.g-journal-body{padding:16px 20px;background:var(--s2,#1e2030)}
.g-journal-form input,.g-journal-form textarea{width:100%;box-sizing:border-box;background:var(--s3,#262838);border:1px solid var(--brd,#2a2d3e);border-radius:8px;padding:8px 12px;color:var(--t,#eee);font-size:.82rem;font-family:inherit;outline:none}
.g-journal-form input:focus,.g-journal-form textarea:focus{border-color:var(--blue,#4a7dff)}
.g-journal-entries{margin-top:16px}
.g-journal-entry{padding:12px;background:var(--s1,#181926);border-radius:8px;margin-bottom:8px}
.g-journal-meta{font-size:.72rem;color:var(--t4,#666);display:flex;align-items:center;gap:6px}
.g-journal-meta strong{color:var(--t2,#bbb)}
.g-journal-del{background:none;border:none;color:var(--t4,#666);cursor:pointer;margin-left:auto;font-size:.9rem;padding:0 4px}
.g-journal-del:hover{color:var(--red,#ff5c5c)}
.g-journal-content{font-size:.84rem;color:var(--t2,#bbb);margin-top:6px;line-height:1.5;white-space:pre-wrap}

/* ─── Photo upload ─── */
.g-upload{border-top:1px solid var(--brd,#2a2d3e);margin-top:14px;padding-top:10px}
.g-upload-header{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--t4,#666);cursor:pointer;transition:color .2s}
.g-upload-header:hover{color:var(--blue,#4a7dff)}
.g-upload-header svg{flex-shrink:0}
.g-upload-area{margin-top:8px}
.g-upload-hint{font-size:.68rem;color:var(--t4,#555);margin-left:8px}
.g-upload-gallery{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.g-upload-thumb{position:relative;width:80px;height:80px;border-radius:6px;overflow:hidden;border:1px solid var(--brd,#2a2d3e)}
.g-upload-thumb img{width:100%;height:100%;object-fit:cover}
.g-upload-thumb .g-upload-del{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.7);color:#fff;border:none;border-radius:50%;width:18px;height:18px;font-size:.7rem;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1}
.g-upload-thumb:hover .g-upload-del{display:flex}

/* ─── Toast notifications ─── */
.g-toast{position:fixed;bottom:24px;right:24px;background:var(--s2,#1e2030);border:1px solid var(--brd,#2a2d3e);border-radius:10px;padding:12px 20px;color:var(--t,#eee);font-size:.82rem;box-shadow:0 8px 30px rgba(0,0,0,.4);z-index:10000;transform:translateY(120%);transition:transform .3s ease;max-width:340px}
.g-toast.show{transform:translateY(0)}
.g-toast.error{border-color:var(--red,#ff5c5c)}
.g-toast.warn{border-color:var(--orange,#f59e0b)}

/* ─── Access badge on day cards ─── */
.g-badge-locked{display:inline-block;font-size:.65rem;background:var(--s3,#262838);color:var(--t4,#666);border-radius:4px;padding:2px 8px;margin-left:8px;vertical-align:middle}
.g-badge-free{background:rgba(52,211,153,.1);color:var(--green,#34d399)}

/* ─── Print / copy protection (only for locked paid content) ─── */
@media print{
    .g-locked,.g-blur-text{display:none!important}
    /* Free pages (tools, checklists, etc.) are printable — no block */
    body.print-allowed::before{display:none!important}
    body:not(.print-allowed)::before{content:"Печать защищённого контента запрещена";display:block;padding:40px;font-size:1.5rem;text-align:center;color:#999}
    body:not(.print-allowed) .lesson-body,body:not(.print-allowed) .tab-content{display:none!important}
}

/* ─── Selection protection on locked content ─── */
.g-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}

/* ─── LEVEL 2: API content loading spinner ─── */
.g-loading-spinner{display:inline-block;width:24px;height:24px;border:2px solid var(--t4,#555);border-top-color:var(--blue,#4a7dff);border-radius:50%;animation:g-spin .8s linear infinite;margin-bottom:8px}
@keyframes g-spin{to{transform:rotate(360deg)}}
.g-api-content{min-height:60px}

/* ─── LEVEL 5: Paid content protection ─── */
.g-paid-content{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
@media print{
    .g-paid-content{display:none!important}
    body:not(.print-allowed) .g-paid-content::before{content:"Контент доступен только онлайн";display:block;padding:40px;font-size:1.2rem;text-align:center;color:#999}
}

/* ─── Responsive ─── */
@media(max-width:768px){
    .g-auth{padding:6px 12px}
    .g-modal{padding:24px;width:95vw}
    .g-fb{gap:8px}
}
