:root{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft Yahei',sans-serif;color:#302e43;background:#161f38;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 6% 5%,#394369 0%,transparent 25%),radial-gradient(circle at 94% 28%,#38334e 0%,transparent 24%),linear-gradient(160deg,#17233f,#12192c 80%);background-attachment:fixed}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.hidden{display:none!important}.sky{pointer-events:none;position:fixed;inset:0;color:#d9c39c;overflow:hidden;opacity:.8}.star{position:absolute;animation:glimmer 6s ease-in-out infinite}.star1{top:7%;left:12%;font-size:21px}.star2{top:13%;right:18%;font-size:15px;animation-delay:2s}.star3{top:48%;left:5%;font-size:13px;animation-delay:1s}.star4{top:75%;right:7%;font-size:26px;animation-delay:3s}.star5{bottom:7%;left:22%;font-size:15px;animation-delay:4s}@keyframes glimmer{0%,100%{opacity:.3;transform:scale(.9)}50%{opacity:1;transform:scale(1.15)}}
.shell{position:relative;width:min(100% - 28px,610px);margin:0 auto;padding:24px 0 30px}.site-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 8px 24px;color:#fffaed}.brand{display:flex;align-items:center;gap:9px}.brand-icon{font-family:Georgia,serif;font-size:36px;color:#e5cda4;line-height:1}.brand strong{font-size:19px;letter-spacing:3px;display:block;font-weight:600}.brand small{font-size:9px;letter-spacing:2px;opacity:.7;display:block;margin-top:3px}.tag{border:1px solid #bcb0c0a8;color:#eee3cb;padding:7px 10px;border-radius:30px;font-size:11px;white-space:nowrap}.top-link{font-size:12px;color:#e4cfb1;text-decoration:none}.panel{background:#fbf7ef;border:1px solid #fff9e9;border-radius:27px;padding:clamp(23px,5vw,43px);box-shadow:0 20px 65px #05091755;position:relative;overflow:hidden}.panel::before{content:'✦';position:absolute;right:25px;top:22px;font-size:19px;color:#d8c7a3}.intro{text-align:center}.eyebrow{font-family:Georgia,serif;font-size:11px;letter-spacing:3px;color:#a48e75}.bigmoon{font-family:Georgia,serif;color:#bd9a72;font-size:74px;line-height:1.3;padding:16px 0 0}.bigmoon span{font-size:18px;vertical-align:top;display:inline-block;margin-top:21px}.intro h1,h1,h2{font-family:'Songti SC','Noto Serif SC','STSong',serif;line-height:1.35;font-weight:600;letter-spacing:1px}.intro h1{font-size:clamp(28px,7vw,38px);margin:7px 0 14px}h1 em{font-weight:400;font-style:normal;color:#916c8e}h2{font-size:clamp(27px,6.8vw,34px);margin:10px 0 14px;color:#352f50}.sub{font-size:14px;color:#777185;line-height:2;max-width:370px;margin:14px auto 23px}.feature-row{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:20px 0 28px}.feature-row span{font-size:11px;color:#816f84;background:#f0eaf2;border:1px solid #e7dfeb;padding:8px 12px;border-radius:30px}.btn{border-radius:13px;min-height:45px;padding:11px 18px;border:1px solid transparent;font-weight:600;font-size:14px;transition:transform .16s,background .16s;display:inline-flex;align-items:center;justify-content:center;gap:10px}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.primary{background:linear-gradient(115deg,#5c587f,#343d61);color:#fffbf1;box-shadow:0 10px 20px #292b5025}.btn.primary:hover{background:linear-gradient(115deg,#756b9a,#394366)}.btn.outline{background:#fffdf9;color:#544b6c;border-color:#bfb8cf}.btn.danger-outline{background:#fff9f7;color:#a04d59;border-color:#edb8be}.btn.wide{width:100%}.btn.compact{min-height:38px;padding:7px 12px}.linkbtn{background:transparent;border:0;color:#756e8b;text-decoration:underline;text-underline-offset:4px;margin:16px auto 0;display:block;font-size:12px}.fineprint{font-size:10px;color:#9d98a2;margin:20px 0 0;line-height:1.6}.step{color:#a88b6f;font-size:11px;letter-spacing:2px;font-weight:600}.hint{font-size:12px;color:#7f788a;line-height:1.8;margin:6px 0 19px}form label{display:block;color:#5d5669;font-size:13px;font-weight:600;margin:20px 0 10px}.optional{font-size:11px;color:#aaa2b3;font-weight:400}.required{color:#ae627b}input:not([type=checkbox]),textarea{width:100%;background:#fffefb;border:1px solid #ded5e1;border-radius:12px;padding:12px 13px;color:#3a3553;outline:0;font-size:14px}input:focus,textarea:focus{border-color:#9a88ac;box-shadow:0 0 0 3px #9b8caf23}textarea{resize:vertical;line-height:1.8;min-height:150px}.info-strip{display:flex;align-items:center;gap:14px;margin:19px 0;background:#f3edf2;border-radius:13px;padding:15px 13px;color:#4b4963}.info-strip b{display:block;font-size:13px}.info-strip small{display:block;font-size:11px;color:#8a7e91;margin-top:5px;line-height:1.7}.mini-moon{font-size:26px;color:#a38a71}.checkline{display:flex!important;gap:9px;align-items:flex-start;margin:12px 0 21px!important;font-size:11px!important;font-weight:400!important;color:#777181!important;line-height:1.8}.checkline input{margin-top:5px;accent-color:#67617f}.checkline a{text-decoration:underline}.error{background:#fff0ef;color:#a33d4b;border-radius:9px;padding:12px;font-size:12px;margin-bottom:12px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(7px,2vw,15px);margin:25px 0 10px}.flipcard{appearance:none;border:0;padding:0;background:none;position:relative;aspect-ratio: .61;min-height:160px;perspective:800px}.flipcard .inside{display:block;position:absolute;inset:0;transform-style:preserve-3d;transition:transform .55s ease}.flipcard.revealed .inside{transform:rotateY(180deg)}.flipcard.is-obstacle.revealed .inside{transform:rotateY(180deg) rotateZ(90deg) scale(.64)}.face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:3px solid #c9b595;box-shadow:0 8px 15px #27203824;padding:7px;overflow:hidden}.back{background:linear-gradient(45deg,#414766,#232d4e);color:#ddcba6;outline:1px solid #d4c49e;outline-offset:-8px}.back::before,.back::after{content:'✦';font-size:25px}.back strong{font-size:45px;font-weight:400;font-family:Georgia}.face.front{background:linear-gradient(160deg,#fffaf1,#eae0d8);color:#554769;transform:rotateY(180deg)}.front .arcana{font-size:26px;color:#bf9577;margin:8px 0 11px}.front strong{text-align:center;font-size:clamp(11px,2.6vw,17px);line-height:1.4}.front small{font-size:10px;color:#907e90;margin-top:10px}.flipcard:focus-visible{outline:3px solid #926aa1;outline-offset:3px}.flipcard:disabled{cursor:default}.position-tag{display:block;text-align:center;font-size:12px;font-weight:600;color:#5e556e;margin-top:10px}.draw-hint{text-align:center;min-height:30px;font-size:12px;color:#82788c;margin:13px 0}.result-cards{display:grid;gap:10px;margin:17px 0}.result-line{background:#f1ebf0;border-radius:13px;padding:12px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px}.result-line strong{font-size:13px;color:#514866}.result-line span{font-size:12px;color:#86758b}.order-meta{font-size:11px;color:#8a8092;padding:10px 0}.reply-box{border:1px solid #ded2df;border-radius:13px;background:#fffdf8;padding:17px;color:#514b62;line-height:1.9;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}.reply-box.pending{background:#f5f1ee;border-style:dashed;color:#817990}.save-box{margin:22px 0 10px;background:#f2eaf2;border-radius:13px;padding:17px}.save-box strong{font-size:13px;color:#655776}.save-box p{font-size:11px;line-height:1.75;color:#807789}.save-box input{font-size:11px!important;margin-bottom:8px}.result-actions{display:flex;gap:10px;margin-top:18px}.result-actions .btn{flex:1;font-size:12px}.privacy-block{color:#dcd5de;padding:14px 16px;font-size:11px;line-height:1.9}.privacy-block summary{cursor:pointer}.privacy-block p{opacity:.85}.shell footer{color:#b8b7c9;font-size:10px;text-align:center;line-height:2.5;margin:14px 0}.shell footer span{opacity:.7}.shell footer a{color:#d6c3ae;text-decoration:none;margin-left:9px}.admin-shell{max-width:780px}.admin-shell .panel::before{display:none}.head-split{display:flex;justify-content:space-between;align-items:center}.head-split h2{margin-bottom:8px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.stats>div{border-radius:13px;background:#f0eaf2;padding:15px 12px;display:flex;flex-direction:column;gap:5px;text-align:center}.stats span{font-size:25px;font-family:Georgia;color:#555079}.stats small{font-size:11px;color:#887e96}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px}.toolbar .hint{margin:0}.orders{display:grid;gap:13px}.order-item{border-radius:14px;border:1px solid #ded4e1;background:#fffefb;padding:17px}.order-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.order-top strong{color:#494360;font-size:14px}.pill{font-size:10px;padding:5px 9px;border-radius:20px;background:#f0e5da;color:#85694f;white-space:nowrap}.pill.done{background:#e3f2e8;color:#437052}.order-id{color:#8e849a;font-size:10px;margin:7px 0 12px;overflow-wrap:anywhere}.order-question{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;font-size:13px;padding:12px;border-radius:9px;background:#f8f4f9}.order-positions{font-size:12px;line-height:1.9;color:#5a526c;margin:12px 0}.reply-label{font-size:12px;font-weight:600;color:#5e566f}.order-item textarea{min-height:130px;font-size:13px;margin:7px 0 10px}.item-actions{display:flex;gap:9px;flex-wrap:wrap}.item-actions .btn{font-size:12px;min-height:39px}.empty{text-align:center;color:#83788e;font-size:13px;padding:45px 0}
@media(max-width:390px){.shell{width:calc(100% - 18px)}.panel{padding:21px 17px}.brand strong{font-size:16px}.tag{font-size:9px;padding:6px}.flipcard{min-height:135px}.front .arcana{margin:3px 0 5px;font-size:20px}.front strong{font-size:11px}.front small{font-size:9px}.cards{gap:7px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}


/* ===== v0.1.1 修复：阻碍位横放保持清晰、视觉比例自然 ===== */
/* 中间稍宽的网格区域留给横置牌；未翻开时三张牌背仍保持等宽。 */
.cards .flipcard {width:100%;}
.cards {
  grid-template-columns: minmax(0,1fr) minmax(0,1.48fr) minmax(0,1fr);
  gap: clamp(7px, 2vw, 14px);
  align-items: start;
}
.cards > div:nth-child(2) {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.flipcard.is-obstacle {
  display: block;
  width: 67.57%;
  flex: none;
}
/* 只翻面，不再缩小整个卡片，也不旋转整个点击区域。 */
.flipcard.is-obstacle.revealed .inside {
  transform: rotateY(180deg);
}
/* 中间牌面独立变成完整横向比例，填满预留的中间格。 */
.flipcard.is-obstacle .face.front {
  inset: auto;
  top: 50%;
  left: 50%;
  width: 148%;
  height: auto;
  aspect-ratio: 1.6;
  transform: translate(-50%, -50%) rotateY(180deg);
  padding: 7px 10px;
}
.flipcard.is-obstacle .face.front .arcana {
  margin: 0 0 2px;
  font-size: 23px;
}
.flipcard.is-obstacle .face.front strong {
  font-size: clamp(11px, 2.2vw, 15px);
  line-height: 1.3;
}
.flipcard.is-obstacle .face.front small {
  margin-top: 4px;
}
/* 每个位置名称固定居中、统一间距。 */
.cards > div { min-width: 0; }
.cards .position-tag { width: 100%; }
@media (max-width: 520px) {
  .shell { width: calc(100% - 18px); padding: 13px 0 26px; }
  .site-head { padding: 10px 2px 17px; gap: 8px; }
  .brand strong { font-size: 17px; letter-spacing: 1px; }
  .brand small { font-size: 9px; letter-spacing: 1px; }
  .tag { font-size: 9px; padding: 6px 8px; }
  .panel { border-radius: 22px; padding: 23px 17px; }
  .panel h2 { font-size: clamp(25px, 6.8vw, 32px); }
  .hint { font-size: 12px; line-height: 1.7; }
  .cards { margin-top: 22px; gap: 7px; }
  .flipcard { min-height: 0; }
  .face { border-width: 2px; border-radius: 10px; padding: 4px; }
  .back::before,.back::after { font-size: 20px; }
  .back strong { font-size: 36px; }
  .front .arcana { font-size: 19px; margin: 2px 0 5px; }
  .front strong { font-size: clamp(10px, 2.9vw, 13px); line-height: 1.3; }
  .front small { font-size: 9px; margin-top: 6px; }
  .flipcard.is-obstacle .face.front { padding: 4px 6px; }
  .flipcard.is-obstacle .face.front .arcana { font-size: 17px; margin-bottom: 1px; }
  .flipcard.is-obstacle .face.front strong { font-size: clamp(10px, 2.8vw, 12px); }
  .flipcard.is-obstacle .face.front small { font-size: 9px; margin-top: 2px; }
  .position-tag { font-size: 11px; margin-top: 9px; }
  .draw-hint { margin-top: 18px; }
  .result-actions { flex-wrap: wrap; }
  .result-actions .btn { min-width: 125px; }
}

/* ============================================================
   星諭星语 v0.2 · 三牌阵通用卡牌与牌桌
   统一物理尺寸：每张牌均为 64 × 104 CSS px，旋转不改变尺寸。
   手机端保留尺寸，牌桌横向滚动，而不是挤压卡面。
   ============================================================ */
:root{
  --xy-card-w:64px;
  --xy-card-h:104px;
  font-family:'YouYuan','幼圆','Yu Gothic UI','Microsoft YaHei UI','PingFang SC','Hiragino Sans GB',sans-serif;
}
body,button,input,textarea{font-family:'YouYuan','幼圆','Yu Gothic UI','Microsoft YaHei UI','PingFang SC','Hiragino Sans GB',sans-serif}
.intro h1,h1,h2,.panel h2{font-family:'YouYuan','幼圆','Yu Gothic UI','Microsoft YaHei UI','PingFang SC','Hiragino Sans GB',sans-serif;font-weight:600}
.shell{width:min(100% - 28px,760px)}
.shell>.panel:not(#draw){max-width:610px;margin-left:auto;margin-right:auto}
.shell>.intro{max-width:610px}

/* 首页：可视化小牌位图 */
.spread-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:24px 0 8px;text-align:center}
.spread-choice{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;padding:10px 6px 14px;border:1px solid #d8d1df;border-radius:15px;background:#fffcf8;color:#4f4667;min-width:0;transition:border-color .18s,background .18s,box-shadow .18s}
.spread-choice:hover{border-color:#8f82a9}
.spread-choice.selected{border:2px solid #76648f;background:#f0eaf5;box-shadow:0 7px 20px #5e548118}
.spread-choice strong{font-size:clamp(11px,1.65vw,14px);line-height:1.4}
.spread-choice small{font-size:10px;color:#8a8196;line-height:1.4;min-height:28px}
.picker-note{font-size:11px;color:#8b8092;line-height:1.6;text-align:center;margin:10px 0 18px}
.mini-board{width:100%;height:104px;display:block;position:relative;border-radius:9px;background:radial-gradient(circle at 50% 50%,#fff9eb,#eee6ef);overflow:hidden}
.mini-board:before{content:'✧';position:absolute;inset:0;display:grid;place-items:center;font-size:54px;color:#bfb0cb45;pointer-events:none}
.mini-slot{width:15px;height:23px;border-radius:3px;border:1px solid #746787;background:linear-gradient(140deg,#f9f6f0,#e3dce9);box-shadow:0 2px 3px #52496d19;display:grid;place-items:center;position:absolute;color:#66597f;font:600 9px Georgia,serif;z-index:1}

/* 牌桌区域：保持固定画布坐标，手机可滑动 */
.cloth-scroll{width:100%;overflow-x:auto;overflow-y:hidden;border-radius:18px;overscroll-behavior-x:contain;scrollbar-color:#ae9db6 #eee6ec;scrollbar-width:thin;border:1px solid #e4dae5}
.cloth-scroll:focus-visible{outline:3px solid #8e75a6;outline-offset:3px}
.cloth{width:660px;min-width:660px;position:relative;isolation:isolate;overflow:hidden;border-radius:17px;box-shadow:inset 0 0 0 1px #ffffff70,inset 0 0 60px #332b3733}
.cloth-xingxi{height:375px;background:radial-gradient(ellipse at 50% 50%,#e9e2f1 0,#d7cedf 42%,#afa3c4 110%)}
.cloth-gypsy{height:490px;background:radial-gradient(circle at 42% 48%,#eee0df 0,#e2ced7 42%,#b89eae 110%)}
.cloth-celtic{height:610px;background:radial-gradient(ellipse at 40% 45%,#e5dfd6 0,#d4d2d0 50%,#aaa9b4 115%)}
.cloth::before,.cloth::after{content:'';position:absolute;z-index:0;pointer-events:none}
.cloth::before{inset:15px;border:1px solid #fff9f070;border-radius:14px}
.cloth::after{width:370px;height:370px;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #ffffff57;border-radius:50%;box-shadow:0 0 0 42px #ffffff14,0 0 0 78px #ffffff12}
.cloth-gypsy::after{width:305px;height:305px;box-shadow:0 0 0 38px #ffffff15,0 0 0 78px #ffffff0b}
.cloth-celtic::after{left:36%;width:385px;height:385px;box-shadow:0 0 0 45px #ffffff16,0 0 0 83px #ffffff10}
.cloth-inscription{position:absolute;left:25px;top:22px;font-size:12px;letter-spacing:2px;color:#6c5b7e;z-index:1}
.cloth-decoration{position:absolute;right:28px;bottom:16px;font-size:40px;color:#fff7eb90;z-index:0;pointer-events:none}
.tableau{position:absolute;inset:0;z-index:2}
.stage-scroll-tip{text-align:center;font-size:11px;color:#94889e;margin:10px 0 3px}

/* 卡牌的宽高对三套牌阵恒定；只转角度，不改宽高和 scale */
.spread-card{position:absolute;appearance:none;display:block;box-sizing:border-box;width:var(--xy-card-w);height:var(--xy-card-h);padding:0;border:0;background:transparent;cursor:pointer;transform:translate(-50%,-50%) rotate(var(--angle,0deg));transform-origin:center center;perspective:700px;z-index:3;transition:filter .18s}
.spread-card:hover{filter:drop-shadow(0 0 7px #fffaf0b0);z-index:8}
.spread-card:focus-visible{outline:3px solid #77628d;outline-offset:5px}
.spread-card .inside{display:block;position:absolute;inset:0;transform-style:preserve-3d;transition:transform .55s ease}
.spread-card.revealed .inside{transform:rotateY(180deg)}
.spread-card .face{border-radius:7px;border:2px solid #c9b595;box-shadow:0 5px 13px #26213955;padding:4px}
.spread-card .back{outline:1px solid #e4d6b2;outline-offset:-5px}
.spread-card .back::before,.spread-card .back::after{font-size:14px}
.spread-card .back strong{font-size:25px}
.spread-card .face.front{transform:rotateY(180deg)}
.spread-card .front-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:0}
.spread-card .front-content.is-reverse{transform:rotate(180deg)}
.spread-card .front .arcana{font-size:19px;margin:0 0 3px}
.spread-card .front strong{font-size:10px;line-height:1.2;overflow-wrap:anywhere}
.spread-card .front small{font-size:8px;line-height:1.3;margin-top:3px}
.spread-card .slot-number{position:absolute;right:-8px;top:-8px;z-index:7;display:grid;place-items:center;width:19px;height:19px;border:1px solid #d5c7b0;background:#f9f4e9;border-radius:50%;font:700 11px Georgia,serif;color:#645378;box-shadow:0 2px 7px #211a302a}
.spread-card .slot-label{position:absolute;bottom:-24px;left:50%;transform:translateX(-50%);padding:2px 6px;border-radius:9px;background:#f8f3e9e6;font-size:10px;white-space:nowrap;color:#554a65;line-height:1.3;box-shadow:0 1px 4px #302b4214}
.cloth-celtic .spread-card[data-index="0"]{z-index:5}
.cloth-celtic .spread-card[data-index="1"]{z-index:6}
.cloth-celtic .spread-card[data-index="0"]:hover{z-index:10}
.cloth-celtic .spread-card[data-index="1"]:hover{z-index:11}

/* 已翻开牌面点击放大查看；不依赖外部字体或图像文件 */
.card-dialog{max-width:min(420px,calc(100vw - 26px));width:360px;border:1px solid #eee2dd;border-radius:22px;padding:24px 26px 26px;background:#fbf7ef;color:#3f3653;box-shadow:0 24px 75px #0b101c90;text-align:center}
.card-dialog::backdrop{background:#12192cd1;backdrop-filter:blur(5px)}
.dialog-close{position:absolute;right:12px;top:9px;border:0;background:transparent;color:#6f6181;font-size:27px;line-height:1;width:40px;height:40px}
.dialog-heading{font-size:12px;color:#997f90;letter-spacing:2px;margin:10px 0 20px}
.dialog-large-card{height:270px;display:flex;align-items:center;justify-content:center;margin:0 auto}
.detail-card{width:158px;height:258px;position:relative;perspective:900px}
.detail-card .inside{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(180deg)}
.detail-card .face{border-radius:13px}
.detail-card .face.front{transform:rotateY(180deg)}
.detail-card .front-content{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}
.detail-card .front-content.is-reverse{transform:rotate(180deg)}
.detail-card .arcana{font-size:46px;margin:0 0 12px}
.detail-card .front strong{font-size:20px;line-height:1.4}
.detail-card .front small{font-size:12px;margin-top:14px}
.card-dialog h2{font-size:21px;margin:13px 0 4px}
.card-dialog #dialogOrientation{font-size:12px;color:#786e89;margin:0}
.dialog-instruction{font-size:11px;line-height:1.6;color:#908698;margin:15px 0 18px}

@media(max-width:520px){
  .shell{width:calc(100% - 18px)}
  .spread-picker{gap:5px}
  .spread-choice{padding:7px 3px 9px;border-radius:11px;gap:5px}
  .spread-choice strong{font-size:10px}
  .spread-choice small{font-size:9px;min-height:38px}
  .mini-board{height:82px}
  .mini-slot{width:12px;height:19px;font-size:8px}
  .cloth-scroll{border-radius:14px}
  .stage-scroll-tip{font-size:10px}
  .card-dialog{padding:20px 17px}
}
@media(prefers-reduced-motion:reduce){.spread-card .inside{transition:none!important}}


/* v0.2.1：仅星隙阵阻碍位保持文字正向；凯尔特斜牌不受影响 */
.cloth-xingxi .spread-card[data-index="1"] .slot-number,
.cloth-xingxi .spread-card[data-index="1"] .slot-label {display:none}
.cloth-xingxi .spread-card[data-index="1"] .front-content {
  position:absolute;
  left:50%; top:50%;
  width:var(--xy-card-h); height:var(--xy-card-w);
  transform:translate(-50%,-50%) rotate(-90deg);
}
.cloth-xingxi .xingxi-obstacle-caption {
  position:absolute;
  left:50%;top:calc(54% + 45px);
  transform:translateX(-50%);
  z-index:5;
  padding:3px 9px;
  white-space:nowrap;
  border-radius:10px;
  background:#f8f3e9e6;
  color:#554a65;
  font-size:11px;
  line-height:1.4;
  pointer-events:none;
  box-shadow:0 1px 4px #302b4214;
}


/* ===== 星諭星语 v0.3：三套确定的原创卡背 + 牌面详情交互 ===== */
/* 所有牌尺寸仍由 --xy-card-w / --xy-card-h 控制；不按牌阵更改。 */
.cloth-xingxi,.theme-xingxi{--xy-card-image:url('/assets/back-xingxi.webp');--xy-back-base:#13233d}
.cloth-gypsy,.theme-gypsy{--xy-card-image:url('/assets/back-gypsy.webp');--xy-back-base:#bb889e}
.cloth-celtic,.theme-celtic{--xy-card-image:url('/assets/back-celtic.webp');--xy-back-base:#0b0815}
.spread-card .face.back,.detail-card .face.back{
  background-color:var(--xy-back-base,#17233f);
  background-image:var(--xy-card-image);
  background-size:100% 100%;
  background-repeat:no-repeat;
  background-position:center;
  border:0;
  border-radius:6px;
  padding:0;
  box-shadow:0 5px 13px #26213955;
  outline:none;
}
.spread-card .back::before,.spread-card .back::after,.detail-card .back::before,.detail-card .back::after{content:none}
.spread-card .face.back>strong,.detail-card .face.back>strong{display:none}
/* 牌背本身已经带边框与图纹，无需叠加旧版的装饰和边框 */
.spread-card .face.front{border:2px solid #c9b595}
/* 只影响首页的三套牌阵选择器，直接展示已经定稿的三张原版卡背 */
.spread-choice{justify-content:flex-start;gap:9px}
.spread-back-preview{width:62px;height:101px;object-fit:contain;display:block;border-radius:6px;filter:drop-shadow(0 4px 5px #201d3230);transition:transform .2s ease}
.spread-choice:hover .spread-back-preview,.spread-choice.selected .spread-back-preview{transform:translateY(-2px)}
.spread-choice small{min-height:30px}
/* 对话框内部卡牌可在正反面间切换；仍为一张完整的卡，不拉伸牌图 */
.detail-card.showing-back .inside{transform:none}
.detail-card .face.back{border-radius:12px}
.dialog-tools{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:6px;margin:12px 0 16px}
.dialog-tools .btn{font-size:11px;padding:8px 5px;min-height:39px;white-space:nowrap}
.dialog-tools .btn:disabled{opacity:.35}
.dialog-instruction{margin:14px 0 8px}
.card-dialog .dialog-large-card{height:270px}
/* 星隙阵阻碍横放，已翻开文字正向；凯尔特斜牌保持原样 */
@media(max-width:520px){
  .spread-choice{padding:9px 3px 12px;gap:5px}
  .spread-back-preview{width:48px;height:78px}
  .spread-choice small{min-height:42px}
  .dialog-tools{gap:5px}
}
@media(prefers-reduced-motion:reduce){.spread-back-preview{transition:none}}


/* ============================================================
   星諭星语 v0.4 · 三桌布分层渲染
   仅改变牌桌的背景层、标题对比度，不碰牌位几何及卡牌尺寸。
   牌桌的所有交互牌依旧由 JavaScript 独立生成。
   ------------------------------------------------------------
   全牌阵统一尺寸：--xy-card-w:64px; --xy-card-h:104px;
   不设置任何牌阵专属卡牌 scale / width / height。
   ============================================================ */
.cloth{
  background-color:#111b2f;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
  box-shadow:inset 0 0 0 1px #fff8e944,inset 0 0 38px #08091332;
}
.cloth-xingxi{background-image:url('/assets/cloth-xingxi.webp')}
.cloth-gypsy{background-image:url('/assets/cloth-gypsy.webp')}
.cloth-celtic{background-image:url('/assets/cloth-celtic.webp')}
/* 去除旧 CSS 画出的假环；如今它们已包含在独立无牌桌布素材中。 */
.cloth::before,.cloth::after{display:none}
.cloth-decoration{display:none}
.cloth-inscription{
  top:31px;left:37px;
  font-size:12px;letter-spacing:2px;
  line-height:1.6;
  text-shadow:0 2px 8px #08091455;
  color:#f0d9a8;
  padding:3px 8px;
  background:linear-gradient(90deg,#08172790,#08172700);
  border-radius:5px;
}
.cloth-gypsy .cloth-inscription{color:#fff5df;background:linear-gradient(90deg,#68435999,#68435900)}
.cloth-celtic .cloth-inscription{color:#f4d39a;background:linear-gradient(90deg,#110b2088,#110b2000)}
.cloth-scroll{border-color:#a895ad7c;background:#17223a;box-shadow:0 8px 23px #22182b20}
/* 牌卡继续64×104px，不管横置、45°倾斜、手机桌面均一致。 */
.cloth .spread-card{width:var(--xy-card-w);height:var(--xy-card-h);}
/* 保证牌位标签在三种深浅不同的桌布上都可辨认。 */
.cloth .spread-card .slot-label,.cloth .xingxi-obstacle-caption{
  background:#fff9eeeF;color:#4e405e;
  border:1px solid #b9a68e33;
  box-shadow:0 2px 7px #0b091c32;
}
.cloth .spread-card .slot-number{background:#fffaf0;color:#51415a;border-color:#d8bb8c}
@media (max-width:520px){
  .cloth-inscription{top:29px;left:35px;font-size:11px}
}


/* v0.53: authentic non-distorted tablecloths. All three sources match the stage aspect ratio. */
.cloth{background-size:cover;background-position:center center;background-repeat:no-repeat;}
.cloth .spread-card{width:64px!important;height:104px!important;scale:1!important;}
.cloth-gypsy .spread-card.bottom-card .slot-number{background:#ffe5ed;color:#7a415c;border:1px solid #b97592;font-weight:800;box-shadow:0 0 12px #f9d0c488;}
.cloth-gypsy .spread-card.bottom-card .slot-label{background:#fff4e4;color:#633b5e;border:1px solid #e8c18a;padding:3px 11px;font-weight:700;}
/* position2 challenge overlays position1 intentionally. Card1 remains accessible by its visible top/bottom edges. */
.cloth-celtic .spread-card[data-index="1"]{z-index:7;}
@media(prefers-reduced-motion:reduce){.cloth .spread-card{transition:none!important}}

/* v0.54 — services, manual payment and a timed text room. */
.service-tabs{display:grid;grid-template-columns:1fr 1fr;background:#eee8ef;padding:5px;border-radius:16px;gap:5px;margin:23px 0 14px}
.service-tab{border:1px solid transparent;border-radius:12px;padding:12px 8px;background:transparent;color:#82748d;font-size:18px;font-weight:600}.service-tab small{display:block;font-size:10px;letter-spacing:1px;margin-top:5px;font-weight:400}.service-tab.selected{background:#fffdf8;color:#4d4567;border-color:#e4dce7;box-shadow:0 3px 12px #47374e10}
.spread-price{font-family:Georgia,serif;font-size:18px;color:#745976;margin-top:5px}.spread-choice{padding-bottom:15px}.spread-choice.selected .spread-price{color:#4d3d68}.spread-choice small{min-height:28px}
.talk-offer{border:1px solid #e1d6e4;border-radius:18px;background:radial-gradient(ellipse at top,#f2e9f5,#fffaf3);padding:20px 18px;margin:20px 0 15px}.talk-moon{font:44px Georgia,serif;color:#b59975}.talk-offer h2{font-size:23px;margin:6px 0 13px}.talk-offer>p{font-size:13px;line-height:1.9;color:#7c6e87}.offer-price{font:600 29px Georgia,serif;color:#685074;display:block;margin:18px 0}.offer-price small{font:12px sans-serif}
.availability{font-size:11px;line-height:1.7;min-height:20px;color:#9b8193;margin:12px 0}.service-terms{padding:13px 15px;background:#f0e9f1;border-left:3px solid #b39cbb;border-radius:4px 11px 11px 4px;color:#72617c;font-size:12px;line-height:1.8;margin:15px 0}
.payment-box{border:1px solid #ddcfdf;border-radius:16px;padding:18px;background:#fffaf4;margin:16px 0 20px}.payment-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.payment-heading small{display:block;color:#8e7c90;font-size:11px}.payment-heading strong{display:block;color:#695174;font:600 27px Georgia,serif;margin-top:6px}.payment-box .hint{margin-top:12px;margin-bottom:7px}.payment-code{display:block;width:200px;height:200px;object-fit:contain;max-width:100%;margin:17px auto;background:#fff;border:1px solid #e3dbe4;border-radius:12px;padding:9px}.payment-order{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;font-size:11px;color:#776783;overflow-wrap:anywhere}.payment-order .linkbtn{margin:0}.payment-box form label{font-size:12px}.payment-box form .btn{margin-top:13px}.payment-box .error{margin-top:13px}
.completion-actions{border-top:1px dashed #d9cbdc;margin-top:20px;padding-top:12px}.completion-actions p{font-size:12px;color:#796a82}.completion-actions>div{display:flex;gap:10px;flex-wrap:wrap}.completion-actions .btn{flex:1;font-size:12px}
.settings-panel{border:1px solid #ded3e3;border-radius:14px;background:#fcf9fd;padding:15px;margin-top:20px}.settings-panel summary{cursor:pointer;font-size:13px;font-weight:600;color:#6a5676;line-height:1.7}.settings-panel summary span{font-size:10px;font-weight:400}.settings-panel textarea{min-height:85px}.price-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 15px}.price-fields label{font-size:11px}.settings-panel input[type=file]{font-size:11px}.settings-panel .checkline{margin-top:18px!important}
.order-filters{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0}.order-filters button{border:1px solid #ded2e4;border-radius:20px;background:#fffdfb;color:#82718e;font-size:11px;padding:7px 12px}.order-filters button.selected{background:#675775;border-color:#675775;color:#fff}.order-payment{font-size:12px;line-height:1.8;padding:10px 0;color:#876e87;overflow-wrap:anywhere}.payment-actions{margin:12px 0}.item-actions button:disabled{opacity:.45;cursor:not-allowed}
.chat-room{border:1px solid #ded1e0;border-radius:17px;padding:17px;background:#fffaf6;margin-top:18px}.chat-head{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#65516f;font-size:14px}.chat-timer{font:600 24px Georgia,serif;color:#8f6d8e;background:#f3eaf2;padding:7px 12px;border-radius:10px;white-space:nowrap}.chat-timer.ended{color:#8d8390;background:#eee9ee}.chat-schedule{font-size:11px;line-height:1.8;color:#927e95;overflow-wrap:anywhere}.chat-log{height:300px;overflow-y:auto;background:#f5eff5;border-radius:12px;padding:14px;margin:17px 0;overscroll-behavior:contain;scrollbar-width:thin}.chat-empty{font-size:12px;color:#9c8ba3;text-align:center;margin:100px 0 0}.chat-message{width:fit-content;max-width:92%;margin:0 auto 12px 0;background:#fffdfa;border:1px solid #e3d9e6;border-radius:12px 12px 12px 3px;padding:10px 12px}.chat-message.own{margin-left:auto;margin-right:0;background:#e9e0f0;border-color:#ded1e5;border-radius:12px 12px 3px 12px}.chat-message small{font-size:9px;color:#97819e;line-height:1.6;display:block}.chat-message p{font-size:13px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;color:#574761}.chat-compose label{font-size:12px;margin-top:0}.chat-compose textarea{min-height:95px;font-size:13px}.chat-compose .btn{display:flex;margin-left:auto;margin-top:9px;min-width:90px}.chat-controls .btn{font-size:12px}.schedule-form{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:center;margin:12px 0}.schedule-form label{grid-column:1/-1;margin:5px 0;font-size:11px}.schedule-form input{font-size:12px;padding:9px;min-width:0}.schedule-form button{font-size:11px;padding:9px;min-height:38px}.chat-room .fineprint{text-align:center;line-height:1.8}
.hidden{display:none!important}
@media(max-width:520px){.talk-offer h2{font-size:21px}.spread-price{font-size:16px}.chat-room{padding:13px}.chat-head{font-size:12px}.chat-log{height:280px;padding:10px}.chat-timer{font-size:21px}.price-fields{gap:0 10px}.payment-box{padding:15px}.order-filters button{padding:7px 10px}}

/* v0.54 hotfix: align tablecloth viewport with canvas */
.cloth-scroll {
  width: 100%;
  max-width: 660px;
  margin-left: 0;
  margin-right: auto;
  box-sizing: border-box;
}

/* Hide the tablecloth scrollbar without disabling scrolling */
.cloth-scroll {
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.cloth-scroll::-webkit-scrollbar {
  display: none;
}


/* Xingyu ICP filing record */
#xy-icp-record {
    margin-top: 10px;
    text-align: center;
    font-size: 11px;
    line-height: 1.8;
}
#xy-icp-record a {
    color: #d6c3ae;
    text-decoration: none;
    margin-left: 0;
}
#xy-icp-record a:hover {
    text-decoration: underline;
}
