:root{--navy:#0f2140;--navy2:#162a4b;--blue:#285dde;--blue2:#1c51d0;--ink:#17253d;--muted:#6e7a8e;--border:#e4e9f1;--line:#f1f3f8;--background:#f5f7fb;--white:#fff;--green:#17805e;--amber:#bd7924;--red:#bb494d;--shadow:0 2px 12px rgba(23,40,72,.035)}
*{box-sizing:border-box}html{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",Arial,sans-serif;font-size:14px;color:var(--ink)}body{margin:0;background:var(--background)}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit}button{cursor:pointer}input,textarea,select{min-width:0}input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-columns:236px 1fr}.sidebar{background:var(--navy);padding:28px 16px 24px;color:#d3ddf0;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;padding:0 12px 34px;color:#fff}.brandmark,.logo{width:42px;height:42px;border-radius:13px;background:#fff;color:var(--navy);font-size:25px;font-weight:800;display:grid;place-items:center}.brand strong{font-size:19px;letter-spacing:.7px;display:block}.brand small{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;opacity:.72}.navlabel{font-size:10px;color:#8b9ab2;letter-spacing:1.9px;margin:6px 14px 10px;font-weight:800}.navlabel.spaced{margin-top:29px}.navitem{border:0;width:100%;display:flex;align-items:center;gap:13px;text-align:left;padding:11px 14px;margin:2px 0;background:transparent;color:#bccce5;border-radius:9px;font-weight:550;transition:.15s}.navitem:hover,.navitem.selected{background:#243e66;color:white;text-decoration:none}.navitem.selected{box-shadow:inset 3px 0 0 #75a9ff}.navicon{font-family:Arial,sans-serif;font-size:19px;width:20px;text-align:center}.logout-form{margin-top:4px}.logout{font-size:14px}.sidebar-bottom{margin-top:auto;border-top:1px solid #355072;padding:23px 12px 0;display:flex;flex-direction:column;gap:5px;color:#fff}.sidebar-bottom small{font-size:11px;color:#879aba}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:65px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 45px}.topbar-right{display:flex;gap:13px;align-items:center;margin-left:auto;font-size:13px;color:var(--muted)}.avatar{width:32px;height:32px;background:#e5eafa;border-radius:50%;color:#274b92;display:grid;place-items:center;font-weight:800}.mobile-title{color:#64748b;font-weight:650;letter-spacing:.3px}.content{width:100%;max-width:1510px;margin:0 auto;padding:33px 42px 58px;flex:1}.footer{color:#96a0b3;border-top:1px solid var(--border);font-size:11px;padding:15px 42px;text-align:center}.eyebrow{color:var(--blue);font-size:10px;font-weight:800;letter-spacing:1.8px;margin-bottom:10px;text-transform:uppercase}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:22px;margin-bottom:26px}.pagehead h1,h1{font-size:28px;font-weight:750;letter-spacing:-.7px;margin:0 0 9px}.pagehead p{margin:0;color:var(--muted);line-height:1.55}.pagehead p strong{color:var(--ink)}.buttoncluster{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:9px;padding:10px 16px;white-space:nowrap;font-weight:700;line-height:1.15;min-height:38px;transition:.15s;color:#31415c;text-decoration:none}.btn:hover{text-decoration:none;box-shadow:0 2px 8px rgba(19,39,68,.07)}.btn.primary{background:var(--blue);color:white;border-color:var(--blue)}.btn.primary:hover{background:var(--blue2)}.btn.secondary{background:white;color:#2e4262}.btn.small{padding:8px 11px;min-height:33px;font-size:12px}.btn.block{width:100%}.panel{background:var(--white);border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow);padding:22px 24px;margin-bottom:20px;min-width:0}.panel h2,.sectiontitle h2{font-size:17px;line-height:1.35;margin:0 0 18px;font-weight:740}.panel h3{font-size:14px;margin:0 0 13px}.panel p{line-height:1.6}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.panelhead h2{margin:0}.panelhead p{margin:4px 0 0;font-size:12px}.panelhead .btn{font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--border);border-radius:13px;padding:20px 22px;min-height:138px;box-shadow:var(--shadow)}.stat div{color:#627189;font-size:13px}.stat strong{font-size:35px;letter-spacing:-1px;display:block;margin:11px 0 4px;font-weight:760;color:#152746}.stat small{font-size:12px;color:#8995a7}.stat.attention strong{color:#c17821}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:21px;align-items:start}.twocol.profile{grid-template-columns:minmax(0,1.65fr) minmax(280px,.95fr)}.sideprofile,.stack{display:flex;flex-direction:column;gap:0}.listline{display:flex;align-items:center;padding:14px 2px;border-top:1px solid var(--line);gap:13px;color:var(--ink)}.listline:hover{color:var(--blue);text-decoration:none}.listline:first-child{border-top:0}.lineicon{display:grid;place-items:center;flex-shrink:0;background:#e9efff;border-radius:11px;color:#3163c4;font-size:19px;width:39px;height:39px}.lineicon.orange{background:#fff0dc;color:#a86a19;font-weight:800}.linecopy{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.linecopy strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.linecopy small{font-size:11px;color:#8b97a6}.arrow{color:#b3bed0;font-size:23px}.min-value{font-size:11px;color:#b47d2f;white-space:nowrap}.empty{text-align:center;color:#94a0af;padding:34px 18px;font-size:13px;line-height:1.6}.notice{background:#f2f6fc;border-left:3px solid #7a9bcc;border-radius:5px;padding:13px 16px;color:#4a6181;line-height:1.65;margin:14px 0;font-size:12.5px}.banner{padding:14px 16px;background:#e9f6ef;color:#176648;border:1px solid #c9ead8;border-radius:9px;margin:0 0 20px;font-size:13px}.banner.warning{background:#fff5e9;color:#99611a;border-color:#f6e0c1}.banner.error{background:#fff0ef;color:#a13e40;border-color:#f8cdcb}.tablewrap{width:100%;overflow:auto}.tablewrap table{border-collapse:collapse;width:100%;font-size:12.5px;line-height:1.4}.tablewrap th{text-align:left;color:#67758a;background:#f8fafd;font-size:11px;letter-spacing:.1px;font-weight:750;padding:13px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.tablewrap td{padding:14px 12px;border-bottom:1px solid #edf0f5;vertical-align:middle}.tablewrap tr:last-child td{border-bottom:0}.tablewrap tbody tr:hover{background:#fafcff}.tablewrap td small{font-weight:400}.muted{color:var(--muted)}.block-text{display:block;margin-top:4px}.stronglink{font-weight:750;color:#234c8e}.pill{display:inline-flex;align-items:center;border-radius:30px;padding:4px 8px;font-size:10px;line-height:1.2;font-weight:720;white-space:nowrap;background:#f0f2f5;color:#6c7685}.pill-success{background:#e4f5ed;color:#17805e}.pill-warning{background:#fff2dc;color:#ab6b14}.pill-danger{background:#fff0ed;color:#bd4f43}.pill-neutral{background:#edf0f5;color:#60708a}.smallpill{background:#f1f5ff;color:#4a6084;border-radius:4px;font-size:10px;padding:4px 5px}.tiny{font-size:9px;color:#318267}.filterbar,.inline-filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.filterbar{margin-bottom:15px}.filterbar .search{flex:1;min-width:220px}input,select,textarea{border-radius:8px;border:1px solid #d5dce9;background:#fff;padding:10px 11px;color:#243653;outline:0;line-height:1.35}input:focus,textarea:focus,select:focus{border-color:#6391e6;box-shadow:0 0 0 3px #e6efff}input[type=number]{max-width:160px}.filterbar select{min-width:130px}.field{display:flex;flex-direction:column;gap:7px;min-width:0;font-size:12px}.field>span{font-weight:680;color:#536278}.field input,.field select,.field textarea{width:100%}.field input[type=number]{max-width:none}.field.wide,.wide{grid-column:1/-1}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.formgrid.compact{grid-template-columns:130px 130px 220px 1fr}.form-stack{display:flex;flex-direction:column;gap:16px}.formactions{display:flex;align-items:center;gap:10px;margin-top:3px}.checkline{display:flex;align-items:center;gap:10px;font-size:12px;line-height:1.5;color:#52627c}.checkline input{flex-shrink:0}.active-check{border-top:1px solid var(--line);padding-top:16px}.cyclefields{border:1px dashed #d5deed;background:#fafcff;padding:15px;border-radius:9px}.field.flex-grow{flex:1}.field.align-end{justify-content:end}.feature-number{font-size:40px;font-weight:770;color:var(--ink);margin:5px 0 17px}.feature-number small{font-size:12px;color:var(--muted);font-weight:400}.detailrow{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line);gap:13px;font-size:12px}.detailrow>span{color:var(--muted)}.separator{height:1px;background:var(--border);margin:19px 0}.inline-form{display:inline}.textbutton{border:0;background:transparent;color:var(--blue);padding:4px 0;font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}.textbutton:hover{text-decoration:underline}.addresspreview{display:block;font-size:11px;color:#8190a5;white-space:pre-line;max-width:430px;margin-top:6px;line-height:1.45}.selectable-table input.copies-input{max-width:72px;text-align:center;padding:9px 6px}.selectable-table .skipinput{width:170px;max-width:none;font-size:11px;padding:8px}.selectable-table .thnote{font-size:10px;color:#96a2b3;font-weight:400}.selectable-table .choice-row td{transition:.15s}.selectable-table .choice-row.deselected{opacity:.6;background:#f9fafc}.selectable-table .choice-row.has-duplicate{background:#fffcf6}.warning-text{color:#b97b28}.dispatch-bar{background:#f1f5ff;border-radius:8px;color:#5271ab;padding:12px 17px;display:flex;justify-content:space-between;font-size:12px;gap:12px;flex-wrap:wrap;margin-bottom:16px}.dispatch-footer{border-top:1px solid var(--border);padding-top:19px;margin-top:14px}.dispatch-footer-bottom{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:16px}.dispatch-footer-bottom p{margin:0;max-width:690px;font-size:12px}.printtitle{display:none}.manifest-totals{display:flex;justify-content:flex-end;gap:26px;padding:16px;border-top:1px solid var(--border);font-size:12px}.manifest-totals strong{font-size:16px}.address-cell{white-space:normal;min-width:180px;max-width:320px;line-height:1.45}.signature{color:#a0adbf}.guest{display:grid;place-items:center;min-height:100vh;background:radial-gradient(ellipse at top,#e1ebff,#f7f9fe 50%,#eef3f9);padding:22px}.auth-box{background:#fff;width:100%;max-width:465px;padding:37px 41px;border:1px solid #e3e8f3;border-radius:17px;box-shadow:0 14px 56px rgba(22,47,93,.09)}.auth-box .auth-top{display:flex;gap:15px;align-items:center}.auth-box .logo{background:var(--navy);color:#fff;width:55px;height:55px;font-size:31px}.auth-box h1{margin:0}.auth-box>p{color:var(--muted);line-height:1.65;margin:23px 0}.auth-box .form-stack{gap:17px}.auth-box .notice{font-size:12px}.auth-box .btn{margin-top:7px}code{background:#eef3fa;border-radius:3px;padding:2px 5px;color:#3c567b}
@media(max-width:1200px){.content{padding:28px 28px 48px}.topbar{padding:0 28px}.sidebar{width:211px}.app-shell{grid-template-columns:211px 1fr}.stats{gap:11px}.stat{padding:17px 16px}.stat strong{font-size:31px}.twocol.profile{grid-template-columns:1fr}.sideprofile{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.sideprofile .panel{margin:0}}
@media(max-width:850px){.app-shell{display:block}.sidebar{height:auto;position:relative;min-height:auto;width:auto;padding:10px 15px;flex-direction:row;overflow:auto;gap:5px;align-items:center}.brand{padding:0 13px 0 0}.brandmark{height:34px;width:34px}.brand strong{font-size:14px}.brand small,.sidebar-bottom,.navlabel,.logout-form,.navitem .navicon{display:none}.navitem{white-space:nowrap;width:auto;padding:8px 12px;font-size:12px;margin:0}.navitem span{white-space:nowrap}.topbar{display:none}.content{padding:24px 18px 42px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.twocol{grid-template-columns:1fr}.pagehead{align-items:flex-start}.pagehead h1{font-size:24px}.panel{padding:18px 16px}.sideprofile{grid-template-columns:1fr}.formgrid.compact{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.pagehead{flex-direction:column;align-items:stretch;gap:15px}.pagehead>.btn{align-self:flex-start}.pagehead h1{font-size:23px}.stats{gap:9px}.stat{padding:13px;min-height:114px}.stat strong{font-size:26px}.stat small{font-size:10px}.formgrid,.formgrid.compact{grid-template-columns:1fr}.filterbar{align-items:stretch}.filterbar .search{min-width:0;width:100%}.panelhead{align-items:flex-start}.auth-box{padding:25px 23px}.dispatch-footer-bottom{align-items:stretch;flex-direction:column}.dispatch-footer-bottom .btn{width:100%}}
@media print{html{font-size:10pt}body{background:#fff}.sidebar,.topbar,.footer,.nonprint,.banner,.pagehead .buttoncluster{display:none!important}.app-shell{display:block;min-height:0}.main,.content{display:block;padding:0;max-width:none}.pagehead{margin:0 0 15px;display:block}.pagehead .eyebrow{display:none}.pagehead h1{display:none}.pagehead p{display:none}.panel{border:0;border-radius:0;box-shadow:none;padding:0;margin:0}.printtitle{display:block;border-bottom:1px solid #333;margin-bottom:10px;padding-bottom:10px}.printtitle h2{margin:0 0 6px;font-size:16pt}.printtitle p{margin:0;font-size:9pt}.tablewrap{overflow:visible}.tablewrap table{font-size:9pt}.tablewrap th,.tablewrap td{border:1px solid #aaa!important;padding:7px 6px!important}.tablewrap th{color:#111;background:#f0f0f0!important}.signature{min-width:75px}.manifest-totals{font-size:10pt}.address-cell{min-width:110px}.tablewrap tr{break-inside:avoid}.panel{break-inside:avoid}}

/* Group subscriber types consistently in customer management, dispatch and printouts. */
:root{--paid-bg:#eff5ff;--paid-fg:#2052a9;--paid-line:#6b9be8;--gift-bg:#f7f0ff;--gift-fg:#7742ac;--gift-line:#b88adc;--trial-bg:#fff7e8;--trial-fg:#9c6419;--trial-line:#efc37b}
.type-legend{display:flex;align-items:center;gap:13px;flex-wrap:wrap;padding:2px 0 15px;color:#77859a;font-size:11px}
.type-legend>span{display:inline-flex;align-items:center;gap:6px}
.type-legend small{color:#8c97a9}
.type-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;line-height:1.15;font-size:11px;font-weight:760;white-space:nowrap;border:1px solid transparent}
.type-badge-subscription{color:var(--paid-fg);background:#e5efff;border-color:#cadeff}
.type-badge-gift{color:var(--gift-fg);background:#f0e4ff;border-color:#e1ccfa}
.type-badge-trial{color:var(--trial-fg);background:#fff0d6;border-color:#f6ddb1}
.type-badge-other{color:#5e6a7f;background:#eef1f5;border-color:#dce3ed}
.tablewrap .type-group-header td{padding:11px 14px;border-bottom:1px solid #e8ebf4;font-size:12px}
.type-group-header td strong{font-weight:800;letter-spacing:.1px}
.type-group-header td span{margin-left:14px;font-size:11px;font-weight:500}
.tablewrap .group-subscription td{background:var(--paid-bg);color:var(--paid-fg);border-left:4px solid var(--paid-line)}
.tablewrap .group-gift td{background:var(--gift-bg);color:var(--gift-fg);border-left:4px solid var(--gift-line)}
.tablewrap .group-trial td{background:var(--trial-bg);color:var(--trial-fg);border-left:4px solid var(--trial-line)}
.tablewrap .group-other td{background:#eef2f7;color:#58667b;border-left:4px solid #aab6c8}
.tablewrap .type-row-subscription td{background:#fbfdff}
.tablewrap .type-row-gift td{background:#fdfaff}
.tablewrap .type-row-trial td{background:#fffefa}
.tablewrap .type-row-subscription td:first-child{box-shadow:inset 3px 0 var(--paid-line)}
.tablewrap .type-row-gift td:first-child{box-shadow:inset 3px 0 var(--gift-line)}
.tablewrap .type-row-trial td:first-child{box-shadow:inset 3px 0 var(--trial-line)}
.tablewrap .type-row.is-inactive td{color:#8691a3}
.tablewrap .type-row.is-inactive td:first-child{box-shadow:inset 3px 0 #c8d0dc}
.selectable-table .choice-row.type-row.has-duplicate td{background:#fffcf6}
.selectable-table .choice-row.type-row.deselected td{background:#f4f6f9;opacity:1}
@media print{
 body{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .tablewrap .type-group-header td{padding:7px 6px!important}
 .tablewrap .type-badge{border:1px solid #777;background:transparent;color:#111;padding:2px 5px;font-size:8pt}
 .type-legend{padding:1px 0 8px;font-size:9pt}
}

/* v1.2: returnable wholesale / Sale or Return bookstore type. */
:root{--bookstore-bg:#e6f6ed;--bookstore-fg:#176e4c;--bookstore-line:#5bb88a}
.type-badge-bookstore{color:var(--bookstore-fg);background:#ddf4e6;border-color:#b5e3ca}
.tablewrap .group-bookstore td{background:var(--bookstore-bg);color:var(--bookstore-fg);border-left:4px solid var(--bookstore-line)}
.tablewrap .type-row-bookstore td{background:#f8fdfa}
.tablewrap .type-row-bookstore td:first-child{box-shadow:inset 3px 0 var(--bookstore-line)}
.tablewrap .type-row-bookstore.row-highlight td{background:#ecf8f0}
.shopbox{background:#f3faf6;border:1px solid #cfe8d8;padding:17px;border-radius:10px}
.shopbox p{margin:7px 0 12px;line-height:1.6}
.shopbox .field{max-width:275px}
.shop-candidates{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}
.shop-candidates a{background:#f2f7fa;border:1px solid #d9e4ea;border-radius:8px;padding:9px 13px;font-size:12px}
.inline-mini-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px;max-width:425px}
.inline-mini-form select,.inline-mini-form input{max-width:150px;min-width:92px;padding:8px 7px;font-size:11px}
.inline-mini-form input[name=settlement_reference],.inline-mini-form input[name=void_reason]{max-width:200px}
.inline-mini-form .btn{padding:8px 10px;white-space:nowrap}
.danger-text{color:#bd4f43}
.tablewrap tr.is-void td{background:#f6f6f6;color:#9aa2af}
#manage{scroll-margin-top:25px}
@media print{.shop-candidates,.inline-mini-form{display:none!important}}

[data-show-for][hidden]{display:none!important}


/* v1.2.1: compact flexible per-batch issue editor */
.issue-editor{display:flex;gap:13px;flex-direction:column}
.issue-editor-list{display:flex;flex-wrap:wrap;gap:9px;align-items:center}
.issue-editor-item{display:inline-flex;align-items:center;gap:7px;background:#f7faff;border:1px solid #d7e3f5;border-radius:10px;padding:5px 7px 5px 10px;color:#667893;font-size:13px;font-weight:700}
.issue-editor-item input{width:83px;min-width:0;padding:7px 8px;border:1px solid #d5dfea;border-radius:7px;background:white;color:#1d3155;font-size:14px;font-weight:750;text-align:center}
.issue-editor-item input:invalid{border-color:#d66b68}
.issue-editor-remove{border:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:#8091aa;font-size:20px;width:28px;height:28px;cursor:pointer;border-radius:7px}
.issue-editor-remove:not(:disabled):hover{background:#e6edfb;color:#244e91}
.issue-editor-remove:disabled{opacity:.26;cursor:not-allowed}
.issue-editor-actions{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:2px}
.issue-editor-count{font-size:12px;color:#77849c;margin-right:auto}
.issue-editor-actions .btn.primary{min-width:152px}
@media(max-width:560px){.issue-editor-actions .btn.primary{width:100%;order:3}.issue-editor-count{margin:0}.issue-editor-item input{width:72px}}

.issue-change-warning{background:#fff7e8;border-left-color:#efb65b;color:#925f25;margin-bottom:0}
.issue-change-warning[hidden]{display:none!important}
.btn:disabled{cursor:not-allowed;opacity:.55;box-shadow:none!important}

/* v1.3 subscription cycle: the current period never changes when renewal is booked early. */
.cycle-next{margin:12px 0 15px;padding:13px 15px;border:1px solid #b6dfd0;border-radius:11px;background:#effaf5;color:#17593b}
.cycle-next p{margin:6px 0;font-size:1rem;font-weight:650}.cycle-next small{display:block;line-height:1.5;color:#367357}
.cycle-rule{border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;padding:13px 15px;margin:8px 0 12px}
.cycle-rule span{display:block;font-size:12px;font-weight:700;color:#1d4ed8;margin-bottom:5px}
.cycle-rule strong{font-size:17px;color:#1e3a8a}.cycle-rule p{color:#475569;margin:7px 0 0;line-height:1.65;font-size:13px}
.cycle-rule.late{border-color:#fed7aa;background:#fff7ed}.cycle-rule.late span,.cycle-rule.late strong{color:#9a3412}
.cycle-verify-form{border:1px solid #fcd34d;border-radius:12px;padding:12px;margin:12px 0;background:#fffbeb}
.cycle-summary .detailrow{align-items:center}

.cycle-estimate{background:#f3f7fc;border:1px solid #dde6ef;border-radius:10px;padding:11px 13px;font-size:13px;color:#526277;line-height:1.5}
.cycle-estimate strong{font-size:15px;color:#123b6a}

.cycle-correction{padding:12px;margin:8px 0;border:1px solid var(--line,#ddd);border-radius:8px}.cycle-correction summary{cursor:pointer;font-weight:600}.cycle-correction form{margin-top:14px}
