*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f5f4ef;color:#17201c;font-family:-apple-system,BlinkMacSystemFont,"Yu Gothic",sans-serif;line-height:1.65}.topbar{height:62px;background:#2f5d4a;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 24px}.topbar a{color:#fff}.brand{font-weight:700}.shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 62px)}.sidebar{background:#fff;border-right:1px solid #d7ddd8;padding:18px}.sidebar a{display:block;padding:12px 8px;color:#26352e;text-decoration:none;border-bottom:1px solid #eef1ef}.sidebar-note{font-size:.8rem;color:#78837d;margin-top:22px;line-height:1.5}.content{padding:28px;min-width:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.card{background:#fff;border:1px solid #d7ddd8;border-radius:10px;padding:18px}.card .num{font-size:2rem;font-weight:700}.panel{background:#fff;border:1px solid #d7ddd8;border-radius:10px;padding:20px;margin:18px 0;scroll-margin-top:18px}.btn{display:inline-block;border:0;border-radius:7px;background:#315f4c;color:#fff;padding:10px 15px;text-decoration:none;cursor:pointer}.btn.secondary{background:#6e7872}.btn.danger{background:#a2433c}.inline{display:flex;gap:10px;align-items:end}.inline>*{flex:1}input,select,textarea{width:100%;padding:10px;border:1px solid #bfc8c2;border-radius:6px;margin:4px 0 13px}textarea{min-height:100px}label{font-weight:700}table{width:100%;border-collapse:collapse;background:#fff}th,td{border:1px solid #d7ddd8;padding:9px;vertical-align:top}th{background:#e7efe9;text-align:left}.flash{padding:12px 15px;border-radius:8px;margin-bottom:14px}.flash.success{background:#e8f5ec}.flash.error{background:#fdeceb}.flash.warning{background:#fff4db}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#e5eee8;font-size:.8rem}.badge.warn{background:#fff1cd;color:#7b5715}.badge.ok{background:#e4f3e8;color:#28623d}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0;position:sticky;top:0;background:#f5f4ef;padding:10px 0;z-index:2}.tabs a{background:#fff;border:1px solid #d7ddd8;padding:8px 11px;border-radius:6px;text-decoration:none;color:#315f4c}.cover{max-width:190px;border:1px solid #ddd;border-radius:6px}.small{font-size:.85rem;color:#65716a}.book-head{display:grid;grid-template-columns:190px 1fr;gap:24px;align-items:start}.book-head.no-cover{grid-template-columns:1fr}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.quick{background:#f7faf8;border:1px solid #dbe3de;border-radius:8px;padding:12px}.quick b{display:block;font-size:.8rem;color:#68736d}.timeline{border-left:3px solid #d7ddd8;padding-left:18px}.timeline .item{margin:0 0 18px}.section-actions{text-align:right;margin-bottom:8px}.empty{color:#7c8781;padding:18px;text-align:center}.issue-list{display:flex;gap:7px;flex-wrap:wrap}.issue{background:#fff0d0;border:1px solid #e8ce8d;padding:5px 8px;border-radius:999px;font-size:.82rem}.login{max-width:460px;margin:70px auto}@media(max-width:800px){.shell{grid-template-columns:1fr}.sidebar{display:flex;overflow:auto;border-right:0;border-bottom:1px solid #ddd}.sidebar a{white-space:nowrap}.sidebar-note{display:none}.content{padding:18px}.inline{display:block}.book-head{grid-template-columns:1fr}.tabs{position:static}}

/* Dashboard trade-condition guide */
.trade-guide{border-top:5px solid #315f4c}
.trade-guide-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.trade-guide-head h2{margin:0}
.trade-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.trade-card{border:1px solid #d7ddd8;border-radius:10px;background:#fbfcfb;padding:16px}
.trade-card h3{margin:7px 0 9px;font-size:1.08rem;color:#274f40}
.trade-card ul{margin:0 0 12px;padding-left:20px;font-size:.9rem}
.trade-label{display:inline-block;background:#e4eee8;color:#315f4c;padding:3px 9px;border-radius:999px;font-size:.78rem;font-weight:700}
.answer-script{background:#fff;border-left:4px solid #6b8d7e;padding:9px 10px;font-size:.85rem}
.alert-card{background:#fff9ed;border-color:#e5cb8f}
.alert-card .trade-label{background:#f8e8bd;color:#765616}
.alert-card .answer-script{border-left-color:#bb8226}
.trade-footer-note{margin-top:16px;padding:12px 14px;background:#f3f5f3;border-radius:8px;font-size:.9rem}
@media(max-width:1100px){.trade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.trade-grid{grid-template-columns:1fr}.trade-guide-head{display:block}.trade-guide-head .btn{margin-top:10px}}

/* Ver.3.2 Dashboard / manual / quotes */
.dashboard-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}
.quick-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.primary-large{font-size:1rem;padding:12px 19px}
.manual-accordion summary{cursor:pointer;font-size:1.08rem;font-weight:700;color:#315f4c;list-style:none}
.manual-accordion summary::-webkit-details-marker{display:none}
.manual-accordion summary:before{content:"笆ｶ";display:inline-block;margin-right:9px;transition:.15s}
.manual-accordion[open] summary:before{transform:rotate(90deg)}
.manual-body{padding-top:16px}
.trade-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.trade-grid.compact .trade-card{padding:13px}
.trade-card{border:1px solid #d7ddd8;border-radius:9px;background:#fbfcfb;padding:16px}
.trade-card h3{font-size:1rem;margin:7px 0}
.trade-card p,.trade-card ul{font-size:.88rem}
.trade-label{display:inline-block;background:#e4eee8;color:#315f4c;padding:3px 9px;border-radius:999px;font-size:.77rem;font-weight:700}
.alert-card{background:#fff8e8;border-color:#e3ca8f}
.answer-script{background:#f5f7f5;border-left:4px solid #618572;padding:10px 12px;margin:10px 0}
.inline-form{display:flex;gap:8px;align-items:center}
.inline-form select{width:auto;margin:0}
@media(max-width:1050px){.trade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.dashboard-head{display:block}.quick-actions{justify-content:flex-start}.trade-grid{grid-template-columns:1fr}}
/* ============================================================
   Ver.4.1 append : paste at the END of assets/admin.css
   (sidebar group menu + "today's tasks" dashboard)
   ============================================================ */

/* --- sidebar: group heading and sub items --- */
.sidebar-group{
  margin:16px 0 2px;padding:0 8px;
  font-size:.72rem;font-weight:700;letter-spacing:.08em;
  color:#8a948e;border-bottom:0;
}
.sidebar a.sidebar-sub{
  padding-left:22px;font-size:.95rem;color:#3a4a42;
}

/* --- today's tasks: overall layout --- */
.todo-hint{margin:0 0 16px}
.todo-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:14px;
}

/* --- card --- */
.todo-card{
  background:#fff;border:1px solid #d7ddd8;border-radius:10px;
  padding:16px;border-left:4px solid #315f4c;
}
.todo-card.warn{border-left-color:#c8901f}
.todo-card.danger{border-left-color:#a2433c}
.todo-card-head{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.todo-card-head h2{margin:0;font-size:1.05rem}
.count-badge{
  min-width:30px;text-align:center;
  background:#eef3f0;color:#274f40;
  border-radius:999px;padding:3px 10px;font-weight:700;font-size:.95rem;
}
.todo-card.warn .count-badge{background:#fbf0d6;color:#7b5715}
.todo-card.danger .count-badge{background:#f6ddda;color:#8a332c}
.todo-note{margin:6px 0 10px;font-size:.8rem;color:#78837d}

/* --- list inside card --- */
.todo-list{list-style:none;margin:0;padding:0}
.todo-list li{
  padding:8px 0;border-top:1px solid #eef1ef;
}
.todo-list li:first-child{border-top:0}
.todo-list a{
  display:block;font-weight:700;color:#274f40;text-decoration:none;
  line-height:1.4;
}
.todo-list a:hover{text-decoration:underline}
.todo-meta{display:block;font-size:.8rem;color:#78837d;margin-top:2px}
.todo-empty{margin:4px 0 0;font-size:.85rem;color:#9aa39d}
.todo-more{margin:10px 0 0;font-size:.8rem;color:#78837d}

@media(max-width:720px){
  .todo-grid{grid-template-columns:1fr}
}
/* ============================================================
   admin.css append : fix the garbled accordion marker
   The old rule uses a text glyph that became mojibake ("laqf...").
   This draws the triangle with borders instead (pure ASCII),
   so it can never garble again. Paste at the END of admin.css.
   ============================================================ */

.manual-accordion summary:before{
  content:"";
  display:inline-block;
  width:0;height:0;
  margin-right:9px;
  vertical-align:middle;
  border-left:7px solid #315f4c;
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
  transition:.15s;
}
.manual-accordion[open] summary:before{transform:rotate(90deg)}