:root{
  --bg:#03080b;
  --panel:#071116;
  --panel2:#0a151b;
  --line:rgba(0,224,236,.28);
  --line-soft:rgba(0,224,236,.14);
  --cyan:#22edf5;
  --cyan-soft:#55cdd4;
  --green:#76ff9d;
  --text:#e8ffff;
  --muted:#78979d;
  --muted2:#9eb2b6;
  --danger:#ff5470;
  --shadow:0 0 28px rgba(0,238,247,.10);
}
*{box-sizing:border-box}
html{margin:0;background:var(--bg)}
body{
  margin:0;
  min-height:100vh;
  color:var(--text);
  background:
    radial-gradient(circle at 50% -10%,rgba(0,225,240,.09),transparent 38rem),
    linear-gradient(180deg,#061016 0%,#020608 72%);
  font-family:"Noto Sans JP",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  overflow-x:hidden;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:9998;
  background:linear-gradient(rgba(255,255,255,.018) 50%,transparent 50%);
  background-size:100% 4px;
  opacity:.18;
}
button,input{font:inherit}
button{-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}

.app-shell{
  width:min(1180px,calc(100% - 22px));
  margin:0 auto;
  padding:18px 0 110px;
}
.app-header{
  position:relative;
  padding:14px 4px 16px;
  border-bottom:1px solid var(--line-soft);
}
.header-topline{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  color:var(--green);
  font:500 11px/1.2 Montserrat,sans-serif;
  letter-spacing:.18em;
}
.header-feed{color:var(--muted);white-space:nowrap}
.header-feed b{color:var(--cyan);font-weight:500}
.app-header h1{
  margin:12px 0 0;
  font:600 clamp(30px,7vw,58px)/.98 Montserrat,sans-serif;
  letter-spacing:.12em;
  text-shadow:0 0 22px rgba(34,237,245,.14);
}
.header-rule{width:42px;height:2px;margin-top:13px;background:var(--cyan);box-shadow:0 0 10px rgba(34,237,245,.7)}

.selection-console{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin:12px 0 14px;
  padding:9px 11px;
  border:1px solid var(--line-soft);
  background:rgba(4,12,16,.78);
  box-shadow:var(--shadow);
}
.console-left,.console-right{display:flex;align-items:center;gap:9px;min-width:0}
.console-label{color:var(--muted);font:500 9px Montserrat,sans-serif;letter-spacing:.16em}
#selected{font-size:11px;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48vw}
.console-right{color:var(--cyan);font:600 11px Montserrat,sans-serif;letter-spacing:.08em;white-space:nowrap}
.capacity-dots{display:flex;gap:4px}
.capacity-dot{display:block;width:5px;height:5px;border:1px solid rgba(34,237,245,.45)}
.capacity-dot.active{background:var(--cyan);box-shadow:0 0 7px rgba(34,237,245,.7)}

.works-list{display:flex;flex-direction:column;gap:14px}
.work-card{
  position:relative;
  min-height:520px;
  overflow:hidden;
  border:1px solid var(--line);
  background:
    linear-gradient(120deg,rgba(0,238,247,.035),transparent 34%),
    rgba(4,12,16,.96);
  box-shadow:0 12px 34px rgba(0,0,0,.32);
  transition:border-color .22s ease,box-shadow .22s ease,transform .22s ease;
}
.work-card::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  border:1px solid rgba(34,237,245,.035);
  z-index:15;
}
.work-card.selected{
  border-color:rgba(118,255,157,.78);
  box-shadow:0 0 0 1px rgba(118,255,157,.14),0 0 30px rgba(118,255,157,.12),0 14px 38px rgba(0,0,0,.38);
}
.work-card.selected::after{
  content:"SELECTED // LOCKED";
  position:absolute;
  z-index:16;
  left:11px;
  bottom:10px;
  padding:5px 7px;
  border:1px solid rgba(118,255,157,.55);
  background:rgba(3,12,8,.86);
  color:var(--green);
  font:600 8px Montserrat,sans-serif;
  letter-spacing:.16em;
  pointer-events:none;
}

.work-number{
  position:absolute;
  z-index:12;
  left:8px;
  top:8px;
  min-width:42px;
  padding:4px 6px;
  border:1px solid var(--line);
  background:rgba(2,8,10,.84);
  color:var(--text);
  font:500 16px/1 Montserrat,sans-serif;
}
.work-image-wrap{
  position:absolute;
  z-index:2;
  top:0;
  right:0;
  width:62%;
  height:286px;
  overflow:hidden;
  background:#010506;
  border-left:1px solid var(--line-soft);
}
.work-image{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:contrast(1.06) saturate(.82) brightness(.9);
}
.work-image-wrap::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.05),transparent 55%,rgba(0,0,0,.48));
}
.work-image-wrap::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  background:radial-gradient(circle at 50% 48%,transparent 38%,rgba(0,0,0,.43) 100%),linear-gradient(90deg,rgba(255,0,90,.025),transparent 45%,rgba(0,246,255,.04));
}
.image-hud{
  position:absolute;
  z-index:8;
  inset:8px 8px auto;
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"target signal" "scan signal";
  align-items:start;
  gap:4px;
  pointer-events:none;
}
.target-label{grid-area:target;justify-self:start}
.signal-meter{grid-area:signal;justify-self:end}
.scan-label{grid-area:scan;justify-self:start}
.target-label,.signal-meter,.scan-label,.crt-label,.crt-signal{
  padding:4px 6px;
  border:1px solid rgba(34,237,245,.42);
  background:rgba(0,8,10,.70);
  color:var(--cyan);
  font:500 8px/1.1 Montserrat,sans-serif;
  letter-spacing:.13em;
}
.crt-label,.crt-signal{
  position:absolute;
  z-index:8;
  bottom:7px;
  pointer-events:none;
}
.crt-label{left:7px;color:var(--muted2);border-color:rgba(34,237,245,.20)}
.crt-signal{right:7px}
.scan-beam{
  position:absolute;
  z-index:9;
  left:0;
  top:-18%;
  width:100%;
  height:18%;
  background:linear-gradient(180deg,transparent,rgba(34,237,245,.18),transparent);
  border-top:1px solid rgba(34,237,245,.75);
  border-bottom:1px solid rgba(34,237,245,.25);
  transform:translateY(0);
  opacity:0;
  pointer-events:none;
}
.scan-beam.run{animation:scanBeam .82s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes scanBeam{0%{transform:translateY(0);opacity:0}12%{opacity:1}100%{transform:translateY(680%);opacity:0}}

.work-info{
  position:relative;
  z-index:10;
  width:78%;
  min-height:420px;
  padding:242px 14px 22px 14px;
  display:flex;
  flex-direction:column;
  gap:9px;
}
.work-info-top{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  color:var(--text);
  font:500 13px/1.2 Montserrat,sans-serif;
  letter-spacing:.10em;
}
.work-status{color:var(--cyan);font-size:8px;letter-spacing:.16em;white-space:nowrap}
.data-block{
  position:relative;
  border:1px solid rgba(34,237,245,.27);
  background:rgba(3,11,14,.84);
  box-shadow:0 4px 16px rgba(0,0,0,.14);
  padding:8px 10px;
}
.data-label,.work-author-label,.work-comment-label{
  display:block;
  margin-bottom:5px;
  font:500 9px/1 Montserrat,sans-serif;
  letter-spacing:.16em;
}
.data-label{color:var(--cyan)}
.work-author-label{color:var(--cyan)}
.work-comment-label{color:var(--green)}
.work-title{font-size:clamp(20px,5vw,30px);font-weight:600;line-height:1.25;letter-spacing:.03em;overflow-wrap:anywhere}
.work-author{color:#79e6eb;font-size:12px;line-height:1.45}
.work-comment{color:#b6c8cc;font-size:11px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.work-actions{display:flex;gap:8px;margin-top:3px}
.detail-btn,.select-btn{
  appearance:none;
  min-height:42px;
  padding:8px 14px;
  border:1px solid rgba(34,237,245,.42);
  background:rgba(0,238,247,.025);
  color:var(--text);
  cursor:pointer;
  transition:.18s ease;
}
.detail-btn{color:#9aadb1;min-width:74px}
.select-btn{min-width:120px;color:var(--cyan);letter-spacing:.13em;font:600 10px Montserrat,sans-serif}
.detail-btn:hover,.select-btn:hover{background:rgba(34,237,245,.08);box-shadow:0 0 16px rgba(34,237,245,.10)}
.select-btn.selected{color:#00120a;background:var(--green);border-color:var(--green);box-shadow:0 0 18px rgba(118,255,157,.22)}

.callout-svg{
  position:absolute;
  z-index:7;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
  overflow:visible;
}
.callout-path{
  fill:none;
  stroke:rgba(34,237,245,.65);
  stroke-width:1.05;
  vector-effect:non-scaling-stroke;
  filter:drop-shadow(0 0 3px rgba(34,237,245,.25));
}
.callout-author{stroke:rgba(34,237,245,.46)}
.callout-comment{stroke:rgba(118,255,157,.55)}
.callout-target{
  fill:#031014;
  stroke:var(--cyan);
  stroke-width:1.1;
  vector-effect:non-scaling-stroke;
}
.callout-target-core{fill:var(--cyan);filter:drop-shadow(0 0 4px rgba(34,237,245,.8))}

.selection-pulse{animation:selectionPulse .72s ease-out both}
@keyframes selectionPulse{
  0%{transform:scale(1);filter:none}
  12%{transform:scale(.992);filter:brightness(1.18)}
  42%{transform:scale(1.006);box-shadow:0 0 0 1px rgba(118,255,157,.7),0 0 40px rgba(118,255,157,.28)}
  100%{transform:scale(1);filter:none}
}
.selection-pulse .work-image-wrap::after{animation:targetFlash .72s ease-out both}
@keyframes targetFlash{0%{opacity:1}25%{opacity:.25;background:rgba(118,255,157,.12)}100%{opacity:1}}

.vote-dock{
  position:fixed;
  z-index:500;
  left:0;
  right:0;
  bottom:0;
  padding:8px max(10px,env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(2,6,8,.08),rgba(2,6,8,.95) 30%);
  backdrop-filter:blur(12px);
}
.vote-dock-inner{
  width:min(1180px,calc(100% - 22px));
  margin:auto;
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px;
  border:1px solid var(--line);
  background:rgba(4,12,16,.94);
  box-shadow:0 -5px 28px rgba(0,0,0,.28);
}
.dock-status{flex:1;color:var(--muted);font:600 9px Montserrat,sans-serif;letter-spacing:.14em;white-space:nowrap}
.dock-status span{color:var(--cyan)}
.vote-button{
  min-height:44px;
  min-width:145px;
  padding:8px 14px;
  border:1px solid var(--cyan);
  background:var(--cyan);
  color:#001014;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 0 18px rgba(34,237,245,.14);
}
.vote-button:disabled{opacity:.28;cursor:not-allowed;box-shadow:none}

.modal{
  position:fixed;
  z-index:10000;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:12px;
}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(5px)}
.modal-dialog{
  position:relative;
  z-index:1;
  width:min(620px,100%);
  max-height:calc(100vh - 24px);
  overflow:auto;
  border:1px solid var(--cyan);
  background:linear-gradient(135deg,rgba(34,237,245,.05),transparent 40%),#061015;
  box-shadow:0 0 42px rgba(34,237,245,.15),0 24px 80px rgba(0,0,0,.72);
  padding:20px;
}
.modal-close{position:absolute;right:7px;top:5px;width:40px;height:40px;border:0;background:transparent;color:var(--cyan);font-size:30px;cursor:pointer}
.modal-work-image-wrap{height:min(52vh,430px);background:#020607;border:1px solid var(--line-soft);overflow:hidden}
.modal-work-image-wrap img{width:100%;height:100%;object-fit:contain;display:block}
.modal-work-info{padding:18px 2px 0}
.modal-kicker{color:var(--green);font:500 9px Montserrat,sans-serif;letter-spacing:.17em}
.modal-dialog h2{margin:7px 0 5px;font-size:clamp(23px,6vw,32px);line-height:1.25}
.modal-author{color:var(--cyan);font-size:12px}
.modal-comment{margin:14px 0;color:#b7c7ca;line-height:1.75;white-space:pre-wrap}
.modal-select{width:100%;min-height:48px;border:1px solid var(--cyan);background:rgba(34,237,245,.07);color:var(--cyan);font:600 11px Montserrat,sans-serif;letter-spacing:.13em;cursor:pointer}
.confirm-dialog,.voted-dialog{text-align:center}
.confirm-mark{width:58px;height:58px;margin:0 auto 12px;display:grid;place-items:center;border:1px solid var(--green);color:var(--green);font:400 30px Montserrat,sans-serif;box-shadow:0 0 22px rgba(118,255,157,.12)}
.confirm-lead,.voted-dialog p{color:var(--muted2);font-size:13px;line-height:1.7}
.confirm-list{margin:16px 0;text-align:left}
.confirm-item{display:flex;align-items:center;gap:12px;padding:11px;border-left:2px solid var(--cyan);background:rgba(34,237,245,.035);margin-bottom:7px}
.confirm-index{color:var(--cyan);font:600 10px Montserrat,sans-serif;min-width:22px}
.modal-actions{display:flex;gap:8px;margin-top:16px}
.modal-actions button{flex:1;min-height:46px;cursor:pointer}
.modal-back{border:1px solid #3b555a;background:transparent;color:#aab9bc}
.modal-submit{border:1px solid var(--cyan);background:var(--cyan);color:#001014;font-weight:800}
.admin-toggle{margin-top:14px;border:0;background:transparent;color:var(--muted);font-size:10px;cursor:pointer}
.admin-box{margin-top:12px;display:flex;gap:7px}
.admin-box input{flex:1;min-width:0;border:1px solid var(--line);background:#03090c;color:var(--text);padding:10px}
.admin-box button{border:1px solid var(--line);background:transparent;color:var(--cyan);padding:10px;cursor:pointer}

@media(min-width:760px){
  .app-shell{width:min(1180px,calc(100% - 40px));padding-top:28px}
  .work-card{min-height:600px}
  .work-image-wrap{width:57%;height:360px}
  .work-info{width:68%;min-height:500px;padding-top:310px;padding-left:22px;padding-right:22px}
  .work-title{font-size:30px}
  .work-comment{font-size:12px;max-width:680px}
}
@media(max-width:430px){
  .app-shell{width:calc(100% - 10px);padding-top:10px}
  .header-topline{font-size:9px}
  .header-feed{font-size:8px}
  .app-header h1{font-size:29px;letter-spacing:.09em}
  .selection-console{margin-top:9px}
  .work-card{min-height:500px}
  .work-image-wrap{width:61%;height:260px}
  .work-info{width:82%;min-height:405px;padding:220px 10px 16px 10px;gap:7px}
  .work-number{font-size:15px;min-width:39px}
  .work-info-top{font-size:11px}
  .work-title{font-size:21px}
  .data-block{padding:7px 8px}
  .work-comment{font-size:10px;line-height:1.55;-webkit-line-clamp:2}
  .work-actions{gap:6px}
  .detail-btn,.select-btn{min-height:40px;padding:7px 11px}
  .select-btn{min-width:112px}
  .vote-dock-inner{width:calc(100% - 10px)}
  .dock-status{font-size:8px}
  .vote-button{min-width:134px;font-size:11px}
}
@media(max-width:350px){
  .work-image-wrap{width:60%;height:245px}
  .work-info{width:84%;padding-top:208px}
  .work-comment-block{display:none}
  .work-card{min-height:440px}
}

/* =========================================================
   MOBILE CARD LAYOUT FIX
   画像と情報の左右関係を反転し、幅の合計が100%を超えないようにする
========================================================= */

.work-card{
  overflow:hidden;
}

.work-image-wrap{
  left:0;
  right:auto;
  width:52%;
  border-left:0;
  border-right:1px solid var(--line-soft);
}

.work-info{
  width:48%;
  margin-left:52%;
  min-height:100%;
  padding:242px 12px 22px 12px;
}

.callout-svg{
  overflow:hidden;
}

@media(min-width:760px){
  .work-image-wrap{
    left:0;
    right:auto;
    width:55%;
    border-left:0;
    border-right:1px solid var(--line-soft);
  }

  .work-info{
    width:45%;
    margin-left:55%;
    min-height:100%;
    padding:310px 18px 22px 18px;
  }
}

@media(max-width:430px){
  .work-card{
    min-height:500px;
  }

  .work-image-wrap{
    left:0;
    right:auto;
    width:52%;
    height:260px;
    border-left:0;
    border-right:1px solid var(--line-soft);
  }

  .work-info{
    width:48%;
    margin-left:52%;
    min-height:100%;
    padding:220px 8px 16px 8px;
    gap:7px;
  }

  .work-info-top{
    font-size:10px;
    gap:4px;
  }

  .work-status{
    font-size:7px;
  }

  .data-block{
    padding:7px 7px;
  }

  .data-label,
  .work-author-label,
  .work-comment-label{
    font-size:8px;
    letter-spacing:.12em;
  }

  .work-title{
    font-size:18px;
    line-height:1.3;
  }

  .work-author{
    font-size:11px;
  }

  .work-comment{
    font-size:9px;
    line-height:1.5;
    -webkit-line-clamp:3;
  }

  .work-actions{
    gap:5px;
    flex-wrap:wrap;
  }

  .detail-btn,
  .select-btn{
    min-height:38px;
    padding:6px 8px;
  }

  .detail-btn{
    min-width:0;
    flex:1;
  }

  .select-btn{
    min-width:0;
    flex:1;
  }
}

@media(max-width:350px){
  .work-image-wrap{
    width:51%;
    height:245px;
  }

  .work-info{
    width:49%;
    margin-left:51%;
    padding-top:208px;
  }

  .work-comment-block{
    display:none;
  }

  .work-card{
    min-height:440px;
  }
}

/* =========================================================
   BASELINE RESET / REFERENCE LAYOUT
   ここから下は既存UIの構造を変えず、見た目だけを原点へ戻す
========================================================= */

/* 情報ラベル */
.data-label,
.work-author-label{
  color:#4d7fae;
}

.data-label,
.work-author-label,
.work-comment-label{
  text-shadow:none;
}

.work-comment-label{
  color:var(--green);
  text-shadow:0 0 8px rgba(118,255,157,.22);
}

/* 引き出し線は細く、情報カードに干渉しない */
.callout-path{
  stroke-width:1;
  opacity:.82;
}
.callout-author{
  stroke:rgba(77,127,174,.72);
}
.callout-comment{
  stroke:rgba(118,255,157,.72);
}

/* =========================================================
   DESKTOP / TABLET
   参考画像の横長カードへ戻す
========================================================= */
@media(min-width:760px){

  .app-shell{
    width:min(1180px,calc(100% - 36px));
    padding:20px 0 90px;
  }

  .app-header{
    padding:20px 22px 18px;
    margin-bottom:18px;
    border:1px solid var(--line);
  }

  .app-header h1{
    font-size:clamp(38px,5vw,60px);
  }

  .selection-console{
    min-height:82px;
    margin:12px 0 22px;
    padding:14px 18px;
  }

  .works-list{
    gap:14px;
  }

  .work-card{
    min-height:232px;
    height:232px;
    border-color:var(--line);
    border-radius:0;
  }

  .work-number{
    left:18px;
    top:18px;
    min-width:42px;
    padding:5px 7px;
    font-size:17px;
    background:rgba(2,8,10,.78);
  }

  /* 番号列を残して、その右に画像 */
  .work-image-wrap{
    left:78px;
    right:auto;
    width:34%;
    height:100%;
    border-left:1px solid var(--line-soft);
    border-right:1px solid var(--line-soft);
  }

  .work-info{
    width:58%;
    margin-left:42%;
    min-height:100%;
    height:100%;
    padding:16px 24% 14px 18px;
    gap:7px;
  }

  .work-info-top{
    font-size:11px;
  }

  .work-title{
    font-size:24px;
    line-height:1.22;
  }

  .work-author{
    font-size:12px;
  }

  .work-comment{
    font-size:11px;
    line-height:1.55;
    -webkit-line-clamp:2;
  }

  .data-block{
    padding:7px 10px;
  }

  .data-label,
  .work-author-label,
  .work-comment-label{
    font-size:8px;
    margin-bottom:4px;
  }

  /* DETAIL / SELECT は右端の独立した操作領域 */
  .work-actions{
    position:absolute;
    top:34px;
    right:18px;
    width:21%;
    margin:0;
    display:flex;
    flex-direction:column;
    gap:10px;
    z-index:20;
  }

  .detail-btn,
  .select-btn{
    width:100%;
    min-height:50px;
    padding:9px 12px;
  }

  .detail-btn{
    border-color:rgba(34,237,245,.38);
    background:rgba(3,10,13,.62);
    color:#9fb0b4;
  }

  .select-btn{
    color:#aebdc0;
    border-color:rgba(160,180,184,.28);
    background:rgba(3,10,13,.45);
  }

  .select-btn.selected{
    color:#00120a;
    border-color:var(--green);
    background:var(--green);
  }

  /* 選択時もカード全体を派手に動かさない */
  .selection-pulse{
    animation:none;
  }

  .selection-pulse .work-image-wrap::after{
    animation:targetFlash .72s ease-out both;
  }

}

/* =========================================================
   MOBILE
   現在のスマホ配置を維持。文字だけ原点側へ調整
========================================================= */
@media(max-width:759px){

  .work-card{
    border-radius:0;
  }

  .data-label,
  .work-author-label{
    color:#4d7fae;
  }

  .work-comment-label{
    color:var(--green);
  }

  .selection-pulse{
    animation:none;
  }

}

/* モーダルは現段階では既存仕様をそのまま使用 */
.modal-work-image-wrap img{
  object-fit:contain;
}
