/* 卡组编辑器 v2：沿用牌桌的 hall.css（变量、按钮、背景），这里只放编辑器自己的布局 */
html,body{height:auto;min-height:100%;overflow:auto;touch-action:manipulation;-webkit-user-select:none;user-select:none}
body.dk{background:#0d0a09}
.dk .hall-bg{position:fixed}
input,select{font-size:16px!important}

/* 顶栏 */
.dk-head{position:sticky;top:0;z-index:20}
.dk-top{display:flex;gap:14px;align-items:center;padding:10px 16px;background:linear-gradient(180deg,rgba(18,12,10,.96),rgba(18,12,10,.82));border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}
.dk-brand{display:flex;gap:10px;align-items:center;color:var(--ink);text-decoration:none;flex:0 0 auto}
.dk-brand .mark{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font:italic 700 20px Georgia,serif;color:#ffe2a3;background:radial-gradient(circle at 35% 30%,#7a3b4f,#2b1820);border:1px solid var(--gold)}
.dk-brand b{display:block;font:600 18px "Noto Serif SC",Georgia,serif;color:var(--gold2)}
.dk-brand small{display:block;font-size:9.5px;letter-spacing:.16em;color:var(--muted)}
.dk-deck{flex:1;display:flex;gap:8px;align-items:flex-end;min-width:0}
.dk-deck label{display:grid;gap:2px;min-width:0;flex:1}
.dk-deck label small{font-size:10px;color:var(--muted);letter-spacing:.08em}
.dk-deck select,.dk-deck input{width:100%;padding:.42rem .6rem;border-radius:10px;border:1px solid var(--line);background:#120d0b;color:var(--ink);font-size:14px!important}
.dk-deck button{flex:0 0 auto}
button.danger{color:#ffb3c0}
.dk-nav{display:flex;gap:6px;flex:0 0 auto}
#saveBtn.dirty{box-shadow:0 0 0 2px rgba(255,226,163,.5),0 0 16px rgba(232,194,122,.45)}
.dk-status{margin:0;padding:5px 16px;font-size:12.5px;color:var(--muted);background:rgba(18,12,10,.7);border-bottom:1px solid rgba(232,194,122,.12);min-height:26px}
.dk-status.error{color:#ff9aae}
.dk-status.flash{animation:detailIn .25s ease-out}

/* 主体：左格子右卡册 */
.dk-main{position:relative;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(340px,1fr);gap:18px;padding:16px;align-items:start}

/* 呢绒桌面上的身份格子 */
.dk-board{padding:16px 18px 18px;border-radius:18px;border:1px solid rgba(214,174,98,.55);
 background:radial-gradient(ellipse at 50% 20%,rgba(255,214,150,.1),transparent 60%),radial-gradient(ellipse at 50% 40%,#1f4034,#14291f 75%);
 box-shadow:0 0 0 7px #3b2216,0 0 0 8px rgba(214,174,98,.4),0 24px 60px rgba(0,0,0,.55),inset 0 0 50px rgba(0,0,0,.5)}
.dk-board>header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.dk-board>header small{color:var(--gold);letter-spacing:.18em;font-size:10px}
.dk-board>header h2{margin:2px 0 0;font:600 21px "Noto Serif SC",Georgia,serif;color:var(--gold2)}
.dk-summary{display:flex;gap:6px;flex-wrap:wrap}
.dk-summary .chip{padding:3px 10px;border-radius:999px;font-size:12px;background:rgba(0,0,0,.3);border:1px solid rgba(214,174,98,.35);color:var(--ink)}
.dk-summary .chip b{color:var(--gold2)}
.dk-summary .k-tarot{border-color:#d7a64f}.dk-summary .k-ygo{border-color:#b8773d}.dk-summary .k-sv{border-color:#9fb7cf}.dk-summary .k-sr{border-color:#d08a86}
.dk-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;align-items:center;margin:0 0 8px}
.dk-suit{display:grid;justify-items:center;color:#e9e2d4}
.dk-suit b{font:400 26px Georgia,"Segoe UI Symbol",serif;line-height:1}
.dk-suit small{font-size:10px;color:var(--muted)}
.dk-suit.red b{color:#ff8fa3}
.dk-cells{display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:6px}
.dk-row.jokers .dk-cells{grid-template-columns:repeat(13,minmax(0,1fr))}
.dk-jnote{grid-column:3/-1;align-self:center;margin:0;font-size:11.5px;color:var(--muted);line-height:1.5}

/* 一个格子 = 一张小牌：象牙纸 + 按黑/红上色的边框 */
.dk-cell{position:relative;aspect-ratio:5/7;padding:0;border-radius:7px;border:3px solid #2c2a33;background:linear-gradient(160deg,#fcf6e8,#ebdcbd);color:#1c1a1f;cursor:pointer;overflow:hidden;
 box-shadow:inset 0 0 0 1px rgba(232,194,122,.9),0 4px 10px rgba(0,0,0,.45);transition:transform .15s ease,box-shadow .15s ease,opacity .15s,filter .15s;backdrop-filter:none;font-weight:400}
.dk-cell.red{border-color:#8f1f36;color:#b4233f}
.dk-cell.joker{border-color:#5b3f86;color:#4b2f6b;background:linear-gradient(160deg,#f6eaff,#cdd8f0)}
.dk-cell .r{position:absolute;left:5px;top:3px;font:800 clamp(11px,1.15vw,16px)/1 Georgia,serif;text-align:left}
.dk-cell .r i{display:block;font-style:normal;font-size:.8em;margin-top:1px}
.dk-cell .pip{position:absolute;inset:0;display:grid;place-items:center;padding-top:14%;font:clamp(18px,2.2vw,30px) Georgia,"Segoe UI Symbol",serif;opacity:.9}
.dk-cell.joker .r{font-size:clamp(10px,1vw,13px)}
.dk-cell:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px rgba(232,194,122,.9),0 8px 16px rgba(0,0,0,.55)}
/* 被替换的格子：显示特殊卡的画，边框换成系列金属色 */
.dk-cell.special{background-size:cover;background-position:50% 25%;color:#fff3d6}
.dk-cell.special:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,5,8,.45),transparent 32%,transparent 55%,rgba(10,5,8,.88))}
.dk-cell.special .r{z-index:1;text-shadow:0 1px 3px #000}
.dk-cell.special.red .r{color:#ffb3c0}
.dk-cell .tag{position:absolute;z-index:1;right:3px;top:3px;padding:1px 4px;border-radius:4px;font:700 9px Georgia,serif;background:rgba(20,12,16,.8);color:#ffe2a3}
.dk-cell .nm{position:absolute;z-index:1;left:2px;right:2px;bottom:3px;font-size:clamp(8.5px,.8vw,11px);line-height:1.15;color:#ffe2a3;text-shadow:0 1px 2px #000;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.dk-cell.k-tarot{border-color:#d7a64f}.dk-cell.k-ygo{border-color:#b8773d}.dk-cell.k-sv{border-color:#9fb7cf}.dk-cell.k-sr{border-color:#d08a86}
.dk-cell.selected{transform:translateY(-4px);box-shadow:0 0 0 2px #ffe2a3,0 0 20px rgba(255,226,163,.85)}
/* 拿起一张卡时：能放的格子发光，放不了的变暗 */
.dk-cell.can{animation:canGlow 1.3s ease-in-out infinite}
.dk-cell.cannot{opacity:.32;filter:grayscale(.6)}
@keyframes canGlow{50%{box-shadow:0 0 0 2px rgba(255,226,163,.9),0 0 18px rgba(255,226,163,.8)}}
.dk-cell.pop{animation:cellPop .4s ease-out}
@keyframes cellPop{0%{transform:scale(.85)}60%{transform:scale(1.08)}100%{transform:none}}

/* 卡册 */
.dk-shelf{position:sticky;top:104px;display:flex;flex-direction:column;max-height:calc(100dvh - 120px);border-radius:18px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(36,24,19,.94),rgba(22,15,12,.96));box-shadow:0 24px 60px rgba(0,0,0,.5);overflow:hidden}
.dk-slot{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 14px;color:#2b211c;border-bottom:1px solid #b98a3e;
 background:radial-gradient(ellipse at 30% 0%,rgba(255,255,255,.55),transparent 60%),linear-gradient(180deg,#fbf4e6,#efe2c6)}
.dk-slot.empty,.dk-slot.armed{grid-template-columns:minmax(0,1fr) auto}
.dk-slot.empty p{margin:0;font-size:13px;line-height:1.6;color:#6b5a4c}
.dk-slot.armed{background:linear-gradient(180deg,#fff4d8,#f0dca8)}
.dk-slot .face{width:84px;border-radius:8px;box-shadow:0 6px 14px rgba(60,40,20,.4);cursor:zoom-in}
.dk-slot small{color:#b98a3e;font-weight:700;font-size:11px;letter-spacing:.06em}
.dk-slot h3{margin:1px 0 4px;font:600 17px "Noto Serif SC",Georgia,serif}
.dk-slot p{margin:0;font-size:12.5px;line-height:1.55;color:#4d3f35;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.dk-slot .acts{display:flex;flex-direction:column;gap:6px}
.dk-slot .acts button{background:#fbf4e6;color:#2b211c;border-color:rgba(185,138,62,.6);white-space:nowrap}
.dk-slot .arts{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:6px;font-size:11px;color:#7a6a5e}
.dk-slot .arts button{display:flex;align-items:center;gap:5px;padding:2px 8px 2px 2px;font-size:11px;background:#fbf4e6;color:#2b211c;border-color:rgba(185,138,62,.4)}
.dk-slot .arts button img{width:20px;height:28px;object-fit:cover;border-radius:3px}
.dk-slot .arts button.on{border-color:#b98a3e;box-shadow:0 0 0 2px rgba(185,138,62,.3)}
.dk-filters{padding:10px 12px 6px;display:grid;gap:8px;border-bottom:1px solid rgba(232,194,122,.14)}
.dk-tabs{display:flex;gap:5px;flex-wrap:wrap}
.dk-tabs button{padding:.3rem .7rem;border-radius:999px;font-size:12.5px}
.dk-tabs button small{margin-left:4px;color:var(--muted);font-weight:400}
.dk-tabs button.on{border-color:var(--gold);color:var(--gold2);background:rgba(232,194,122,.14)}
.dk-filter-row{display:flex;gap:10px;align-items:center}
.dk-filter-row input[type=search]{flex:1;min-width:0;padding:.4rem .7rem;border-radius:10px;border:1px solid var(--line);background:#120d0b;color:var(--ink);font-size:14px!important;-webkit-user-select:text;user-select:text}
.dk-fit{display:flex;gap:5px;align-items:center;font-size:12px;color:var(--muted);white-space:nowrap}
.dk-fit input{accent-color:#e8c27a}
.dk-count{padding:4px 14px 0;font-size:11.5px;color:var(--muted)}
.dk-grid{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px 12px 14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:12px 10px;align-content:start;touch-action:pan-y}
.dk-none{grid-column:1/-1;color:var(--muted);font-size:13px;text-align:center;padding:24px 0}
.dk-tile{position:relative;display:grid;gap:3px;padding:0;border:0;background:none;text-align:left;cursor:pointer;backdrop-filter:none;transition:transform .15s,opacity .15s,filter .15s;color:var(--ink);font-weight:400}
.dk-tile img{width:100%;aspect-ratio:320/492;border-radius:8px;background:rgba(255,255,255,.05);box-shadow:0 6px 14px rgba(0,0,0,.5)}
.dk-tile:hover{transform:translateY(-4px)}
.dk-tile .nm{font-size:12px;font-weight:650;color:var(--ink);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dk-tile .rule{font-size:10.5px;color:var(--muted);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dk-tile .used{position:absolute;left:5px;top:5px;padding:1px 6px;border-radius:999px;font:700 10.5px Inter,sans-serif;background:rgba(20,12,16,.75);color:#c9b9a5}
.dk-tile .used.on{background:#e8c27a;color:#2b1d0a}
.dk-tile .flag{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);padding:2px 10px;border-radius:999px;font-size:12px;font-weight:800;background:rgba(20,12,16,.82);color:#ffe2a3;border:1px solid #e8c27a}
.dk-tile .info{position:absolute;right:5px;top:5px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:italic 700 13px Georgia,serif;background:#fbf4e6;color:#2b211c;box-shadow:0 2px 6px rgba(0,0,0,.4)}
.dk-tile.nofit,.dk-tile.full{opacity:.38;filter:grayscale(.7)}
.dk-tile.nofit:hover,.dk-tile.full:hover{transform:none}
.dk-tile.mine img{box-shadow:0 0 0 2px #ffe2a3,0 0 18px rgba(255,226,163,.7)}
.dk-tile.armed img{box-shadow:0 0 0 3px #ffe2a3,0 0 24px rgba(255,226,163,.9)}
.dk-tile.armed{transform:translateY(-6px)}
.dk-sheet-close,.dk-fab{display:none}

/* 详情面板放在最上层 */
.cdetail{z-index:60}

@media (max-width:1100px){.dk-main{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr)}.dk-deck label:nth-child(2){display:none}}
/* 手机：格子每种花色折成两行，卡册是从下面拉起的抽屉 */
@media (max-width:760px){
  .dk-top{flex-wrap:wrap;gap:8px;padding:8px 10px}
  .dk-brand small{display:none}.dk-brand .mark{width:32px;height:32px;font-size:17px}
  .dk-nav{margin-left:auto}.dk-nav .btn:nth-child(2){display:none}
  .dk-deck{order:3;flex-basis:100%}
  .dk-deck label:nth-child(2){display:grid}
  .dk-status{padding:4px 10px;font-size:12px}
  .dk-main{grid-template-columns:1fr;padding:12px 10px 90px}
  .dk-board{padding:12px 10px}
  .dk-row{grid-template-columns:1fr;gap:4px;margin-bottom:10px}
  .dk-suit{grid-auto-flow:column;justify-content:start;gap:6px;align-items:baseline}
  .dk-suit b{font-size:20px}
  .dk-cells{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
  .dk-row.jokers .dk-cells{grid-template-columns:repeat(7,minmax(0,1fr))}
  .dk-jnote{grid-column:3/-1}
  .dk-cell .r{font-size:13px}.dk-cell .pip{font-size:22px}.dk-cell .nm{font-size:9px}
  .dk-shelf{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:40;max-height:82dvh;height:82dvh;border-radius:18px 18px 0 0;transform:translateY(105%);transition:transform .28s ease}
  body.sheet-open .dk-shelf{transform:none}
  body.sheet-open:after{content:"";position:fixed;inset:0;z-index:30;background:rgba(5,3,2,.55)}
  .dk-sheet-close{display:block;margin:6px 12px 10px}
  .dk-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dk-slot{grid-template-columns:auto minmax(0,1fr);padding:10px 12px}
  .dk-slot .face{width:64px}
  .dk-slot .acts{grid-column:1/-1;flex-direction:row}
  .dk-slot.empty .acts,.dk-slot.armed .acts{grid-column:auto}
  .dk-fab{display:block;position:fixed;z-index:25;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);padding:.7rem 1.6rem;border-radius:999px;font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.6)}
  body.sheet-open .dk-fab{display:none}
  .cdetail{z-index:60}
}
