/* UI polish layer: loaded after the base design system. */

:focus-visible{outline:3px solid rgba(var(--primary-rgb),.42);outline-offset:3px}

/* Public home ----------------------------------------------------------- */
.hero{padding:104px 0 94px}
.hero::before{background:radial-gradient(ellipse 760px 380px at 12% 18%,rgba(16,185,129,.28),transparent 68%),radial-gradient(ellipse 620px 340px at 88% 72%,rgba(14,165,233,.22),transparent 68%),radial-gradient(ellipse 430px 240px at 52% 100%,rgba(139,92,246,.16),transparent 70%)}
.hero-inner{max-width:760px}
.hero-eyebrow,.section-kicker,.dashboard-kicker{display:inline-flex;align-items:center;gap:8px;font-size:11px;line-height:1;letter-spacing:.14em;font-weight:800}
.hero-eyebrow{margin:0 0 18px;padding:8px 11px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.86)}
.hero-eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:#6ee7b7;box-shadow:0 0 0 4px rgba(110,231,183,.15)}
.hero-title{font-size:clamp(38px,5vw,58px);letter-spacing:-.05em}
.hero-desc{max-width:600px;margin-left:auto;margin-right:auto}
.hero-search{padding:7px;max-width:620px;border:1px solid rgba(255,255,255,.2);border-radius:16px;background:rgba(255,255,255,.1);backdrop-filter:blur(12px)}
.hero-search input{border-radius:10px;padding:16px 20px}
.hero-search .btn{border-radius:10px}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:27px}
.section-heading .section-title{margin-bottom:0}
.section-kicker{color:var(--primary);margin-bottom:8px}
.section-count{padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg2);color:var(--text3);font-size:12px;font-weight:600}
.book-card-horizontal{min-height:124px;padding:23px}
.book-card-horizontal .book-cover{width:60px;height:60px;border-radius:16px}
.book-card-horizontal .book-info h3{font-size:17px}
.book-stats{padding-top:2px}
.side-card{border-radius:16px}

/* Reading --------------------------------------------------------------- */
.reader-content{padding-top:48px;padding-bottom:56px}
.article{padding:0 0 36px}
.article-title{letter-spacing:-.035em;line-height:1.25}
.article-meta{display:flex;flex-wrap:wrap;gap:8px 18px;padding:11px 0 20px;border-bottom:1px solid var(--border)}
.article-meta span{position:relative}
.article-meta span+span::before{content:"";position:absolute;left:-10px;top:50%;width:3px;height:3px;border-radius:50%;background:var(--text3)}
.article-body{font-size:16px;line-height:1.85}
.article-body h2{margin-top:2.4em;padding-top:.35em;border-top:1px solid var(--border)}
.doc-pager{gap:16px}
.doc-pager a{border-radius:14px}

/* Keep the copyright bar visible while reading long documents. The content
   receives an equal bottom reserve so the final line is never obscured. */
.reader-page .site-footer{position:fixed;left:0;right:0;bottom:0;z-index:40;min-height:var(--footer-h);margin:0;padding:18px 24px;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur)) saturate(150%);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);box-shadow:0 -8px 24px rgba(15,23,42,.06)}
.reader-page .reader-layout{padding-bottom:var(--footer-h)}
.reader-page .reader-content{padding-bottom:calc(56px + var(--footer-h))}

/* Mobile reader drawer: use dynamic viewport units and a real bottom inset
   so browser chrome/safe-area padding cannot hide the feedback action. */
@media(max-width:900px){
  .reader-sidebar{height:100dvh;max-height:100dvh;overflow-y:scroll;overscroll-behavior:contain;touch-action:pan-y;padding-bottom:calc(52px + env(safe-area-inset-bottom))}
  .sidebar-feedback{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
}

/* Admin ----------------------------------------------------------------- */
.admin-topbar{min-height:68px;padding:0 30px;background:var(--glass-bg);backdrop-filter:blur(14px)}
.admin-sidebar{box-shadow:10px 0 30px rgba(15,23,42,.025)}
.admin-menu{padding:14px 12px}
.admin-menu a{margin:3px 0;border-radius:10px}
.admin-menu a.active{box-shadow:0 4px 14px rgba(var(--primary-rgb),.14)}
.dashboard-welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:30px 32px;margin-bottom:24px;overflow:hidden;position:relative;border:1px solid rgba(var(--primary-rgb),.18);border-radius:20px;background:linear-gradient(120deg,rgba(var(--primary-rgb),.12),rgba(14,165,233,.07) 52%,var(--bg2) 100%)}
.dashboard-welcome::after{content:"";position:absolute;width:240px;height:240px;right:-80px;top:-130px;border-radius:50%;border:40px solid rgba(var(--primary-rgb),.08)}
.dashboard-welcome>div{position:relative;z-index:1}
.dashboard-kicker{color:var(--primary);margin-bottom:8px}
.dashboard-welcome h2{font-family:Fraunces,"Noto Sans SC",serif;font-size:27px;letter-spacing:-.04em;line-height:1.2;margin:0 0 7px}
.dashboard-welcome p{color:var(--text2);font-size:14px;margin:0}
.dashboard-actions{display:flex;gap:10px;flex-shrink:0}
.dashboard-actions .btn{white-space:nowrap}
.stat-card{min-height:122px;padding:23px 22px}
.stat-card .stat-label{font-size:13px;letter-spacing:.02em}
.stat-card .stat-value{margin-top:10px;font-size:28px;letter-spacing:-.04em}
.admin-card{border-radius:16px}
.card-head{min-height:58px;background:linear-gradient(90deg,var(--bg2),var(--bg3))}
table.table th{padding-top:15px;padding-bottom:15px}
table.table td{padding-top:16px;padding-bottom:16px}

/* High-frequency admin screens ----------------------------------------- */
.login-page{position:relative;isolation:isolate;background:radial-gradient(circle at 16% 18%,rgba(var(--primary-rgb),.18),transparent 30%),radial-gradient(circle at 84% 82%,rgba(14,165,233,.16),transparent 32%),var(--bg)}
.login-page::before,.login-page::after{content:"";position:absolute;z-index:-1;border-radius:50%;filter:blur(1px)}
.login-page::before{width:320px;height:320px;left:-120px;bottom:-130px;border:55px solid rgba(var(--primary-rgb),.09)}
.login-page::after{width:230px;height:230px;right:-80px;top:-70px;border:38px solid rgba(14,165,233,.09)}
.login-box{border:1px solid var(--border);box-shadow:var(--shadow-xl)}
.login-head .logo-mark{margin-inline:auto}
.login-box .form-item{margin-bottom:18px}
.login-box .form-input{height:46px;border-radius:10px;background:var(--bg3)}
.login-box .btn{height:46px;border-radius:10px}
.filter-form{width:100%}
.filter-search{min-width:220px;padding-left:36px!important;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>")!important;background-repeat:no-repeat!important;background-position:13px center!important}
.filter-form select.filter-input{cursor:pointer}
.pagination{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-height:64px;padding:12px 18px}
.pagination a,.pagination-ellipsis{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;font-weight:600}
.pagination a{color:var(--text2);border:1px solid transparent}
.pagination a:hover{color:var(--primary);background:var(--primary-light);border-color:rgba(var(--primary-rgb),.16)}
.pagination a.current{color:#fff;background:var(--primary);border-color:var(--primary);box-shadow:0 3px 9px rgba(var(--primary-rgb),.23)}
.pagination-ellipsis{color:var(--text3)}
.pagination-nav{font-size:16px!important}
.form-card{border:1px solid var(--border);box-shadow:var(--shadow-md)}
.form-card>h3{margin-top:32px;padding-top:24px;border-top:1px solid var(--border)}
.form-card>h3:first-of-type{margin-top:20px}
.form-item label{font-weight:650}
.form-input,.form-select,.form-textarea{border-radius:10px}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb),.12)}
.form-actions{position:sticky;bottom:0;z-index:10;box-shadow:0 -8px 20px rgba(15,23,42,.035)}

/* Settings page --------------------------------------------------------- */
.setting-page{max-width:none!important;padding:0!important;border-radius:18px!important;box-shadow:var(--shadow-md)!important;overflow:hidden!important}
.setting-page .setting-section{padding:30px 38px;background:var(--bg2)}
.setting-page .setting-section:nth-of-type(even){background:linear-gradient(135deg,var(--bg2),var(--bg3))}
.setting-page .setting-section>h3{font-family:Fraunces,"Noto Sans SC",serif;font-size:20px!important;letter-spacing:-.02em}
.setting-page .setting-section>h3 small{font-family:inherit;font-size:12px;letter-spacing:0}
.setting-page .setting-desc{max-width:760px;margin:0 0 24px!important;padding:9px 12px!important;border-left:3px solid var(--primary);border-radius:0 8px 8px 0;background:var(--primary-light);color:var(--text2)}
.setting-page .form-row{gap:22px}
.setting-page .form-item{min-width:0}
.setting-page .radio-group{display:grid;gap:9px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg3)}
.setting-page .radio-group label{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;color:var(--text2);font-weight:500}
.setting-page .radio-group input{margin-top:4px;accent-color:var(--primary)}
.setting-page .upload-field{padding:14px;border:1px dashed var(--border2);border-radius:12px;background:var(--bg3)}
.setting-page #rewriteRules{background:var(--code-bg)!important;color:var(--code-color);border-color:var(--code-border);line-height:1.65}
.setting-page>.form-actions{padding:18px 38px 24px;background:var(--bg3)}
.watermark-panel{padding:18px 20px;margin:0 0 16px;border:1px solid var(--border);border-radius:14px;background:var(--bg3)}
.watermark-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding-bottom:13px;border-bottom:1px dashed var(--border)}
.watermark-panel-head strong{display:block;font-size:15px}.watermark-panel-head span{display:block;margin-top:3px;color:var(--text3);font-size:12px}
.watermark-fields{align-items:flex-end}.watermark-fields .form-item{margin-bottom:0}.watermark-upload{display:flex;gap:8px}.watermark-upload .form-input{min-width:0}.watermark-upload .btn{flex-shrink:0}.watermark-image-field{display:none}.watermark-opacity{max-width:360px}
.article.has-watermark{position:relative}.article.has-watermark::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--watermark-opacity,.12);background-repeat:repeat;background-size:220px auto;background-position:center}.article.has-watermark[data-doc-watermark-type="text"]::before{content:attr(data-doc-watermark);display:flex;align-items:center;justify-content:center;font-size:clamp(22px,4vw,48px);font-weight:800;letter-spacing:.12em;color:var(--primary);transform:rotate(-24deg);white-space:nowrap}.article.has-watermark[data-doc-watermark-type="image"]::before{background-image:var(--doc-watermark-image)}.article.has-watermark>*{position:relative;z-index:1}
.watermarked-image{display:block;position:relative;overflow:hidden}.watermarked-image::after{content:attr(data-watermark);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:var(--watermark-opacity,.12);font-size:clamp(14px,2vw,24px);font-weight:700;color:var(--primary);letter-spacing:.08em;transform:rotate(-24deg);background:repeating-linear-gradient(-24deg,transparent 0,transparent 90px,rgba(var(--primary-rgb),.03) 90px,rgba(var(--primary-rgb),.03) 180px)}
.watermarked-image[data-watermark-type="image"]::after{content:"";background-image:var(--image-watermark-image);background-repeat:repeat;background-size:180px auto;background-position:center}
.watermark-page{max-width:none!important;padding:0!important;overflow:hidden!important}.watermark-page .setting-section{padding:30px 38px}.watermark-page .form-row{gap:20px}.watermark-page .color-input{padding:4px;min-height:42px}.article.has-watermark[data-doc-watermark-type="text"]::before{font-size:var(--watermark-font-size,28px);color:var(--watermark-color,#059669);transform:rotate(var(--watermark-angle,-24deg));background:repeating-linear-gradient(var(--watermark-angle,-24deg),transparent 0,var(--watermark-gap,120px) transparent)}.article.has-watermark[data-doc-watermark-type="image"]::before{background-repeat:var(--watermark-repeat,repeat);background-size:var(--watermark-gap,120px) auto;transform:rotate(var(--watermark-angle,-24deg))}.watermarked-image::after{font-size:var(--watermark-font-size,28px);color:var(--watermark-color,#059669);transform:rotate(var(--watermark-angle,-24deg));background-repeat:var(--watermark-repeat,repeat)}.watermarked-image[data-watermark-type="image"]::after{background-size:var(--watermark-gap,120px) auto}

/* Document editor ------------------------------------------------------- */
.doc-editor-card{border:1px solid var(--border);box-shadow:var(--shadow-md);overflow:visible}
.doc-meta-bar{padding:20px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(135deg,var(--bg2),var(--bg3));margin-bottom:16px}
.doc-meta-bar .form-item{margin-bottom:0}
.doc-meta-bar .meta-title .form-input{min-height:44px;font-size:16px;font-weight:650}
.EasyMDEContainer .editor-toolbar{position:sticky;top:68px;z-index:20;box-shadow:0 6px 14px rgba(15,23,42,.06)}
.EasyMDEContainer .editor-toolbar button{border-radius:7px!important}
.EasyMDEContainer .CodeMirror{border-radius:0 0 12px 12px;box-shadow:inset 3px 0 0 transparent;transition:box-shadow var(--t-fast)}
.EasyMDEContainer .CodeMirror:focus-within{box-shadow:inset 3px 0 0 var(--primary)}
.EasyMDEContainer .editor-preview-active-side{border-radius:0 0 12px 0}
.md-modal-box{border:1px solid var(--border);border-radius:16px!important;box-shadow:var(--shadow-xl)}
.md-modal-head{background:linear-gradient(90deg,var(--bg2),var(--bg3))}
.md-modal-foot{background:var(--bg3)}

/* Sales and fulfilment -------------------------------------------------- */
.sw-subnav{position:sticky;top:76px;z-index:30;backdrop-filter:blur(12px)}
.sw-order-table td{vertical-align:middle!important}
.order-number{font-family:"JetBrains Mono",monospace;font-size:12px;letter-spacing:.01em}
.order-amount{font-size:15px;font-weight:750;color:var(--primary);white-space:nowrap}
.sw-order-table .tag{white-space:nowrap}
.card-key-cell{max-width:400px;padding:9px 12px!important;background:var(--bg3);background-clip:padding-box;font-size:12px!important}
.sw-batch-form{padding:24px 26px;background:linear-gradient(135deg,var(--bg2),var(--bg3))}
.sw-batch-row label{font-weight:650}
.sw-batch-row textarea{min-height:180px;line-height:1.7;font-family:"JetBrains Mono",monospace}
.sw-edit-overlay{backdrop-filter:blur(5px)}
.sw-edit-dialog{border:1px solid var(--border);border-radius:16px!important;box-shadow:var(--shadow-xl)}
.sw-edit-dialog h3{font-family:Fraunces,"Noto Sans SC",serif;letter-spacing:-.02em}
.sw-edit-actions{padding-top:14px;border-top:1px solid var(--border)}

@media(max-width:900px){
  .hero{padding:72px 0 66px}
  .reader-content{padding-top:30px}
  .dashboard-welcome{padding:24px;margin-bottom:18px;align-items:flex-start;flex-direction:column}
  .dashboard-actions{width:100%}
  .dashboard-actions .btn{flex:1}
  .admin-topbar{padding:0 16px}
  .admin-card{overflow-x:auto}
  table.table{min-width:680px}
  .sw-subnav{top:68px}
  .EasyMDEContainer .editor-toolbar{top:68px}
  .setting-page{overflow:hidden!important}
  .setting-page .setting-section{padding:23px 20px}
  .setting-page .setting-section>h3{font-size:18px!important;align-items:flex-start;flex-wrap:wrap}
  .setting-page .setting-section>h3 small{width:100%;margin-left:14px}
  .setting-page .form-row{flex-direction:column;gap:0}
  .setting-page>.form-actions{padding:16px 20px 20px}
  .watermark-panel{padding:16px}.watermark-panel-head{align-items:flex-start}.watermark-fields{gap:0}.watermark-opacity{max-width:none}
}
.article.has-watermark[data-doc-watermark-position="top-left"]::before{align-items:flex-start;justify-content:flex-start}.article.has-watermark[data-doc-watermark-position="top-right"]::before{align-items:flex-start;justify-content:flex-end}.article.has-watermark[data-doc-watermark-position="bottom-left"]::before{align-items:flex-end;justify-content:flex-start}.article.has-watermark[data-doc-watermark-position="bottom-right"]::before{align-items:flex-end;justify-content:flex-end}
.article.has-watermark[data-doc-watermark-type="image"]::before{background-position:var(--watermark-position,center)!important}
.article.has-watermark.watermark-pattern[data-doc-watermark-type="text"]::before{content:"";background-image:var(--watermark-text-image);background-repeat:var(--watermark-repeat,repeat);background-size:var(--watermark-gap,120px) var(--watermark-gap,120px);transform:none}
.watermarked-image.watermark-pattern::after{content:"";background-image:var(--watermark-text-image);background-repeat:var(--watermark-repeat,repeat);background-size:var(--watermark-gap,120px) var(--watermark-gap,120px);transform:none}
@media(max-width:600px){
  .hero-search{padding:5px;display:block;background:transparent;border:none}
  .hero-search input,.hero-search .btn{width:100%;border-radius:10px}
  .hero-search .btn{margin-top:10px;padding:14px}
  .section-heading{align-items:flex-start}
  .section-count{margin-top:18px;white-space:nowrap}
  .book-card-horizontal{padding:18px;min-height:112px}
  .article-body{font-size:15px}
  .article-meta{font-size:12px}
  .reader-page .site-footer{padding:13px 16px;min-height:52px;font-size:12px}
  .reader-page .reader-layout{padding-bottom:52px}
  .reader-page .reader-content{padding-bottom:calc(40px + 52px)}
  .dashboard-welcome h2{font-size:23px}
  .dashboard-actions{flex-direction:column}
  .filter-form{display:grid;grid-template-columns:1fr auto}
  .filter-search{min-width:0;width:100%}
  .filter-form select.filter-input{grid-column:span 2;width:100%}
  .filter-form .btn{justify-content:center}
  .pagination{justify-content:center;padding:10px}
  .pagination a,.pagination-ellipsis{min-width:32px;height:32px}
  .form-actions{position:static;flex-wrap:wrap}
  .doc-meta-bar{padding:15px}
  .EasyMDEContainer .editor-toolbar{position:static;overflow-x:auto;white-space:nowrap}
  .sw-batch-form{padding:18px}
}
