/* ============================================================
   ToolLinks 管理コンソール — Dark Developer Console Theme
   Bootstrap 5.3 (data-bs-theme="dark") を土台にした上書きスタイル
   ============================================================ */
:root{
  --bg:#090c15; --bg-2:#0e1320; --panel:#121826; --panel-2:#161d2e; --panel-3:#1d2638;
  --border:#232c40; --border-soft:#1a2233; --border-bright:#34415f;
  --text:#e8ebf2; --text-dim:#99a2b8; --text-faint:#616b85;
  --accent:#2ee6d6; --accent-bright:#6ff3e7; --accent-soft:rgba(46,230,214,.12); --accent-line:rgba(46,230,214,.34);
  --amber:#f5b748; --danger:#ff6b6b; --danger-soft:rgba(255,107,107,.12);
  --font-mono:'JetBrains Mono','Zen Kaku Gothic New',ui-monospace,SFMono-Regular,Menlo,monospace;
  --font-sans:'Sora','Zen Kaku Gothic New',system-ui,-apple-system,'Segoe UI',sans-serif;
  --r-card:14px;
  --shadow-card:0 16px 38px -22px rgba(0,0,0,.9);
}

/* Bootstrap dark-theme variable overrides */
[data-bs-theme="dark"]{
  --bs-body-bg:var(--bg);
  --bs-body-color:var(--text);
  --bs-border-color:var(--border);
  --bs-emphasis-color:var(--text);
  --bs-secondary-color:var(--text-dim);
  --bs-secondary-bg:var(--panel-2);
  --bs-tertiary-bg:var(--panel);
  --bs-link-color:var(--accent);
  --bs-link-hover-color:var(--accent-bright);
}

*{box-sizing:border-box}
body{
  font-family:var(--font-sans);color:var(--text);background-color:var(--bg);min-height:100vh;
  background-image:
    radial-gradient(900px 520px at 50% -10%,rgba(46,230,214,.10),transparent 62%),
    radial-gradient(700px 480px at 92% 4%,rgba(46,230,214,.05),transparent 60%),
    linear-gradient(rgba(94,120,168,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(94,120,168,.045) 1px,transparent 1px);
  background-size:auto,auto,58px 58px,58px 58px;background-attachment:fixed;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
body::after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.admin-header,.container,footer{position:relative;z-index:1}
::selection{background:var(--accent);color:#04130f}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--bg-2)}
::-webkit-scrollbar-thumb{background:var(--panel-3);border:2px solid var(--bg-2);border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:var(--border-bright)}

/* ---- header ---- */
.admin-header{
  background:rgba(9,12,21,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);padding:1rem 0;margin-bottom:2.4rem;
  position:sticky;top:0;z-index:1030;
}
.admin-header h1{
  font-family:var(--font-mono);font-weight:700;letter-spacing:-.01em;color:var(--text);
  display:flex;align-items:center;gap:.5rem;
}
.admin-header h1::before{
  content:"◆";color:var(--accent);font-size:.7em;
  filter:drop-shadow(0 0 6px var(--accent-line));
}

/* ---- panels / cards ---- */
.card{
  background:linear-gradient(158deg,var(--panel) 0%,var(--bg-2) 110%);
  border:1px solid var(--border);border-radius:var(--r-card);color:var(--text);
}
.card.shadow-sm{box-shadow:var(--shadow-card)!important}
.card-title{font-family:var(--font-mono);font-weight:500;color:var(--text)}
.card-title i{color:var(--accent)}
.card-text{color:var(--text-dim);line-height:1.75;font-size:.9rem}
.card-text strong{color:var(--text)}
.card-text code{
  font-family:var(--font-mono);font-size:.84em;color:var(--accent-bright);
  background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:5px;padding:.08rem .34rem;
}
.card-header{background:transparent!important;border-bottom:1px solid var(--border)}
.card-header.bg-light{background:var(--bg-2)!important}

/* ---- statistics ---- */
.card .h3{
  font-family:var(--font-mono);font-weight:700;color:var(--accent);
  text-shadow:0 0 22px var(--accent-line);
}
.text-muted{color:var(--text-faint)!important}

/* ---- headings ---- */
h1,h2,h3,.h3,.h4{color:var(--text)}
h2.h4{font-family:var(--font-mono);font-weight:500;letter-spacing:.01em}
h2.h4::before{content:"// ";color:var(--accent)}

/* ---- table ---- */
.table{
  --bs-table-bg:transparent;
  --bs-table-color:var(--text);
  --bs-table-border-color:var(--border);
  --bs-table-hover-bg:var(--accent-soft);
  --bs-table-hover-color:var(--text);
  margin-bottom:0;
}
.table thead th,
.table > thead.table-light th{
  font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-faint);
  background:var(--bg-2)!important;border-bottom:1px solid var(--border-bright);
  padding:.8rem .75rem;
}
.table tbody td{border-color:var(--border-soft);padding:.8rem .75rem;vertical-align:middle}
.table tbody td strong{font-family:var(--font-mono);font-weight:500;color:var(--text)}
.table tbody td small{color:var(--text-faint)!important}
.table tbody td a{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);word-break:break-all}
.table tbody td a:hover{color:var(--accent-bright)}

/* ---- link rows / drag ---- */
.link-item{transition:background .16s}
.link-actions{visibility:hidden;opacity:0;transition:opacity .22s,visibility .22s;display:inline-flex;gap:.35rem}
.link-item:hover .link-actions{visibility:visible;opacity:1}
.drag-handle{cursor:grab;color:var(--text-faint);transition:color .15s}
.drag-handle:hover{color:var(--accent)}
.drag-handle:active{cursor:grabbing}
.sortable-ghost{background:var(--accent-soft)!important;outline:1px dashed var(--accent);outline-offset:-2px}

/* ---- badges ---- */
.badge.bg-secondary{
  --bs-bg-opacity:1;
  background:var(--accent-soft)!important;color:var(--accent-bright);
  border:1px solid var(--accent-line);
  font-family:var(--font-mono);font-weight:500;font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;
  padding:.34rem .5rem;
}

/* ---- forms ---- */
.form-control,.form-select{
  background:var(--bg-2);border:1px solid var(--border-bright);color:var(--text);border-radius:8px;
}
.form-control:focus,.form-select:focus{
  background:var(--bg-2);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);color:var(--text);
}
.form-control::placeholder{color:var(--text-faint)}
.form-label{
  font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);
}
.form-text{color:var(--text-faint)!important;font-size:.76rem}
.input-group-text{background:var(--bg-2);border:1px solid var(--border-bright);color:var(--accent)}
.form-check-input{background-color:var(--bg-2);border-color:var(--border-bright)}
.form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}
.form-check-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

/* ---- buttons ---- */
.btn{
  font-family:var(--font-mono);font-size:.8rem;font-weight:500;letter-spacing:.02em;
  border-radius:8px;transition:transform .14s ease,background .16s,border-color .16s,color .16s;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#04130f;box-shadow:0 6px 20px -8px var(--accent)}
.btn-primary:hover,.btn-primary:focus{background:var(--accent-bright);border-color:var(--accent-bright);color:#04130f}
.btn-success{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-bright)}
.btn-success:hover,.btn-success:focus{background:var(--accent);border-color:var(--accent);color:#04130f}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#1a0606}
.btn-danger:hover,.btn-danger:focus{background:#ff8585;border-color:#ff8585;color:#1a0606}
.btn-secondary{background:var(--panel-3);border-color:var(--border-bright);color:var(--text-dim)}
.btn-secondary:hover,.btn-secondary:focus{background:var(--panel-2);border-color:var(--border-bright);color:var(--text)}
.btn-outline-primary{border-color:var(--border-bright);color:var(--accent);background:transparent}
.btn-outline-primary:hover,.btn-outline-primary:focus{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-bright)}
.btn-outline-danger{border-color:var(--border-bright);color:var(--danger);background:transparent}
.btn-outline-danger:hover,.btn-outline-danger:focus{background:var(--danger-soft);border-color:var(--danger);color:#ff8585}
.btn-outline-danger:disabled{color:var(--text-faint);border-color:var(--border);opacity:.55}
.btn-outline-light{border-color:var(--border-bright);color:var(--text-dim)}
.btn-outline-light:hover,.btn-outline-light:focus{background:var(--panel-2);border-color:var(--accent-line);color:var(--text)}

/* ---- modals ---- */
.modal-content{
  background:var(--panel);border:1px solid var(--border-bright);border-radius:16px;
  box-shadow:0 30px 70px -24px rgba(0,0,0,.9);
}
.modal-header,.modal-footer{border-color:var(--border)}
.modal-title{font-family:var(--font-mono);font-weight:500;font-size:1rem;color:var(--text)}
.modal-backdrop.show{opacity:.74}

/* ---- alerts ---- */
.alert-danger{
  background:var(--danger-soft);border:1px solid rgba(255,107,107,.4);color:#ffb3b3;
  font-family:var(--font-mono);font-size:.85rem;border-radius:10px;
}

/* ---- footer ---- */
.admin-footer{
  border-top:1px solid var(--border);background:rgba(9,12,21,.6)!important;margin-top:3rem;
}
.admin-footer p{font-family:var(--font-mono);font-size:.78rem;color:var(--text-faint);letter-spacing:.02em}

/* ---- login screen ---- */
.login-screen{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:var(--bg);padding:1rem;
}
.login-card{
  background:linear-gradient(158deg,var(--panel) 0%,var(--bg-2) 110%);
  border:1px solid var(--border-bright);border-radius:var(--r-card);
  padding:2rem;width:100%;max-width:420px;box-shadow:var(--shadow-card);
}
.login-card h1{
  font-family:var(--font-mono);color:var(--text);
}
.login-card h1 i{color:var(--accent);margin-right:.4rem}
