  /* すべて #enikkiRoot 配下と body.enikki-on に限定する。
     ショートコード設置ページでテーマや他プラグインの見た目を壊さないため */
  #enikkiRoot, #enikkiRoot *, #enikkiRoot *::before, #enikkiRoot *::after {
    margin:0; padding:0; box-sizing:border-box; }
  body.enikki-on { height:100%; background:#000; overflow:hidden; touch-action:none;
    font-family:"Hiragino Mincho ProN","Yu Mincho",serif; color:#c9c4bb;
    user-select:none; -webkit-user-select:none;
    -webkit-touch-callout:none; -webkit-tap-highlight-color:transparent; }
  #enikkiRoot { font-family:"Hiragino Mincho ProN","Yu Mincho",serif; color:#c9c4bb;
    touch-action:none; -webkit-touch-callout:none; -webkit-tap-highlight-color:transparent; }
  #enikkiRoot img { -webkit-user-drag:none; user-select:none; -webkit-user-select:none; }

  #enikkiRoot #wrap { position:fixed; inset:0; display:flex; align-items:center; justify-content:center;
    filter:brightness(var(--enikki-bright,1)); }
  #enikkiRoot #cv { image-rendering:pixelated; image-rendering:crisp-edges; background:#000; }

  #enikkiRoot #vig { position:fixed; inset:0; pointer-events:none;
    box-shadow:inset 0 0 16vw 5vw rgba(0,0,0,.8); }

  #enikkiRoot #msg { position:fixed; top:12%; left:0; right:0; text-align:center;
    font-size:clamp(15px, 2.2vw, 20px); letter-spacing:.22em; line-height:2;
    opacity:0; transition:opacity 1s; padding:0 6vw;
    text-shadow:0 1px 3px #000, 0 0 10px #000; pointer-events:none; }
  #enikkiRoot #msg.show { opacity:1; }

  #enikkiRoot #hint { position:fixed; bottom:7%; left:0; right:0; text-align:center;
    font-size:clamp(12px, 1.8vw, 15px); letter-spacing:.25em; color:#7d7870;
    opacity:0; transition:opacity 1s; pointer-events:none; }
  #enikkiRoot #hint.show { opacity:1; animation:enikki-breathe 2.8s ease-in-out infinite; }
  @keyframes enikki-breathe { 0%,100%{opacity:.35} 50%{opacity:.85} }

  #enikkiRoot #voice { position:fixed; top:36%; left:0; right:0; text-align:center;
    font-family:"Hiragino Mincho ProN","Yu Mincho",serif;
    font-size:clamp(18px, 3vw, 28px); letter-spacing:.3em; color:#b6cfc2;
    opacity:0; transition:opacity 2.2s; pointer-events:none;
    filter:url(#yure);
    text-shadow:0 0 14px rgba(120,180,150,.35), 0 0 3px rgba(0,0,0,.9), 2px 3px 6px rgba(0,0,0,.8); }
  #enikkiRoot #voice.show { opacity:1; }
  #enikkiRoot #voice .vch { display:inline-block;
    animation:enikki-vwobble 3.1s ease-in-out infinite, enikki-vflick 4.7s steps(3) infinite;
    animation-delay:var(--d1), var(--d2); }
  @keyframes enikki-vwobble {
    0%,100% { transform:translate(0,0) rotate(0deg) scaleY(1); }
    22% { transform:translate(0.6px,-1.6px) rotate(-2.4deg) scaleY(1.05); }
    47% { transform:translate(-0.8px,0.9px) rotate(1.6deg) scaleY(0.97); }
    74% { transform:translate(0.3px,1.8px) rotate(-1.1deg) scaleY(1.03); } }
  @keyframes enikki-vflick {
    0%,100% { opacity:1; } 34% { opacity:.55; } 67% { opacity:.85; } }

  #enikkiRoot #note { position:fixed; top:5%; right:5%; max-width:44vw;
    font-size:clamp(11px, 1.5vw, 13px); line-height:1.9; letter-spacing:.1em;
    color:#a89e8c; background:rgba(20,18,14,.7); padding:9px 13px; border-radius:2px;
    opacity:0; transition:opacity 1.2s; pointer-events:none; }
  #enikkiRoot #note.show { opacity:1; }

  @keyframes enikki-shake {
    0%,100%{transform:translate(0,0)} 8%{transform:translate(-18px,9px)} 24%{transform:translate(15px,-11px)}
    40%{transform:translate(-13px,-7px)} 56%{transform:translate(11px,9px)} 72%{transform:translate(-8px,5px)}
    88%{transform:translate(5px,-3px)} }
  body.enikki-shake #enikkiRoot #wrap { animation:enikki-shake .5s linear infinite; }

  #enikkiRoot .overlay { position:fixed; inset:0; display:none; align-items:center; justify-content:center;
    flex-direction:column; background:rgba(2,2,4,.95); z-index:10; text-align:center; padding:6vw; }
  #enikkiRoot .overlay.show { display:flex; }
  #enikkiRoot .ovHint { margin-top:7vh; font-size:clamp(12px,1.7vw,14px); letter-spacing:.28em; color:#6f6a62;
    animation:enikki-breathe 2.8s ease-in-out infinite; }

  #enikkiRoot .paper { background:#efe7d3; color:#3a342b; width:min(78vw, 470px); padding:8% 7%;
    border-radius:2px; box-shadow:0 12px 60px rgba(0,0,0,.9);
    font-family:"Hiragino Maru Gothic ProN","Yu Gothic",sans-serif; }
  #enikkiRoot .paperDate { font-size:clamp(13px,2vw,15px); letter-spacing:.2em; color:#6b6252; margin-bottom:1.4em; }
  #enikkiRoot .paperBody { font-size:clamp(19px,3.2vw,26px); line-height:2.1; letter-spacing:.12em; font-weight:700; }
  #enikkiRoot .paperSmudge { margin-top:1.6em; font-size:clamp(12px,1.7vw,14px); color:#a79d8a; letter-spacing:.15em; }
  #enikkiRoot .paperHint { margin-top:2.2em; font-size:clamp(11px,1.6vw,13px); color:#8a8071; letter-spacing:.25em;
    animation:enikki-breathe 2.8s ease-in-out infinite; }

  #enikkiRoot .diaryWrap { display:flex; flex-direction:column; align-items:center; gap:2.4vh; }
  #enikkiRoot .diaryStack { position:relative; height:80vh; aspect-ratio:1024/1536; max-width:88vw; }
  #enikkiRoot .dImg { position:absolute; inset:0; width:100%; height:100%; object-fit:contain;
    border-radius:2px; filter:drop-shadow(0 12px 40px rgba(0,0,0,.9)); }
  #enikkiRoot .dClear { opacity:0; transition:opacity 2.6s ease; }
  #enikkiRoot .dClear.on { opacity:1; }

  #enikkiRoot #failOv { background:#000; }
  #enikkiRoot #failText { font-size:clamp(20px,3.4vw,30px); letter-spacing:.4em; line-height:2.4; color:#8f8a83; }

  #enikkiRoot .endTitle { font-size:clamp(19px,3.2vw,28px); letter-spacing:.3em; margin-bottom:5vh; }
  #enikkiRoot .endBody { font-size:clamp(13px,1.9vw,16px); letter-spacing:.15em; line-height:2.5; color:#8f8a83; }

  /* ---------- タイトル画面 ---------- */
  #enikkiRoot #startOv.titleScreen { background:#050409; overflow:hidden; }
  #enikkiRoot .titleBgLayer { position:absolute; inset:-4%;
    background-size:cover; background-position:center;
    opacity:0; transition:opacity 3.5s ease;
    animation:enikki-tbg 26s ease-in-out infinite alternate; pointer-events:none; }
  #enikkiRoot .titleBgLayer.on { opacity:.16; }
  @keyframes enikki-tbg { from { transform:scale(1.0); } to { transform:scale(1.1); } }

  #enikkiRoot #titleLogo { position:relative; width:min(64vw, 560px); max-height:36vh;
    object-fit:contain; margin-bottom:7vh;
    filter:drop-shadow(0 6px 26px rgba(0,0,0,.9)); }
  #enikkiRoot #titleMenu { position:relative; display:flex; flex-direction:column; align-items:center; gap:3.2vh; }
  #enikkiRoot .tMenu { font-family:inherit; background:none; border:none; cursor:pointer;
    font-size:clamp(13px,1.9vw,16px); letter-spacing:.4em; text-indent:.4em; color:#7d7870;
    transition:color .4s; padding:4px 18px; }
  #enikkiRoot .tMenu:hover { color:#d6d1c8; }
  #enikkiRoot .tMenuMain { font-size:clamp(18px,2.8vw,23px); color:#c9c4bb;
    animation:enikki-breathe 3.4s ease-in-out infinite; }

  #enikkiRoot #titleNote { position:absolute; top:4vh; right:4vw; text-align:right;
    font-size:clamp(10px,1.4vw,12px); letter-spacing:.2em; line-height:2.2; color:#5f5a53; }
  #enikkiRoot #titleVer { position:absolute; bottom:3vh; left:4vw;
    font-size:clamp(9px,1.2vw,11px); letter-spacing:.2em; color:#443f39; }
  /* 下中央のメタリンク（クレジット・はいしん）: ゲームメニューより一段引いた佇まい */
  #enikkiRoot #titleMeta { position:absolute; bottom:3vh; left:0; right:0;
    display:flex; justify-content:center; gap:2.6em; }
  #enikkiRoot .tMeta { font-family:inherit; background:none; border:none; cursor:pointer;
    font-size:clamp(10px,1.4vw,12px); letter-spacing:.3em; color:#5f5a53;
    transition:color .4s; padding:4px 2px; }
  #enikkiRoot .tMeta:hover { color:#c9c4bb; }

  /* せってい */
  #enikkiRoot .setRow { display:flex; flex-direction:column; align-items:center; gap:2vh;
    margin-top:2vh; }
  #enikkiRoot .setLabel { font-size:clamp(13px,1.9vw,15px); letter-spacing:.35em; color:#c9c4bb; }
  #enikkiRoot .setBtns { display:flex; gap:14px; }
  #enikkiRoot .optBtn { font-family:inherit; font-size:clamp(11px,1.6vw,13px); letter-spacing:.22em;
    color:#8f8a83; background:none; border:1px solid #35322c; padding:9px 22px; border-radius:2px; cursor:pointer; }
  #enikkiRoot .optBtn:hover { color:#c9c4bb; border-color:#524d45; }
  #enikkiRoot .optBtn.on { color:#e8e4da; border-color:#8f8a83; background:rgba(60,55,48,.35); }

  /* おもいでギャラリー（クリア後解放） */
  #enikkiRoot #galleryOv { position:fixed; inset:0; display:none; background:rgba(2,2,4,.97); z-index:30; }
  #enikkiRoot #galleryOv.show { display:block; }
  #enikkiRoot .galInner { position:absolute; inset:0; overflow-y:auto; touch-action:pan-y;
    padding:9vh 6vw 12vh; display:flex; flex-direction:column; gap:3vh; align-items:center; }
  #enikkiRoot .galSec { font-size:clamp(13px,2vw,16px); letter-spacing:.35em; color:#8f8a83; margin-top:2vh; }
  #enikkiRoot #zukanMenu { display:flex; flex-direction:column; align-items:center; gap:4vh; margin-top:6vh; }
  #enikkiRoot .galBack { align-self:flex-start; color:#5f5a53; font-size:clamp(11px,1.6vw,13px); }

  /* えにっき: サムネイル3カラム、クリックで拡大 */
  #enikkiRoot .galPageGrid { display:grid; grid-template-columns:repeat(3, 1fr); gap:2vw;
    width:min(88vw, 760px); }
  #enikkiRoot .galThumb { width:100%; border-radius:2px; cursor:pointer;
    filter:drop-shadow(0 6px 20px rgba(0,0,0,.8));
    transition:transform .25s ease; }
  #enikkiRoot .galThumb:hover { transform:translateY(-4px) scale(1.02); }
  #enikkiRoot #pageZoom { position:fixed; inset:0; display:none; align-items:center; justify-content:center;
    background:rgba(2,2,4,.96); z-index:40; cursor:pointer; }
  #enikkiRoot #pageZoom.show { display:flex; }
  #enikkiRoot #pageZoom img { max-height:92vh; max-width:92vw; border-radius:2px;
    filter:drop-shadow(0 14px 50px rgba(0,0,0,.9)); }
  #enikkiRoot .galChara { display:flex; align-items:center; gap:5vw;
    width:min(88vw, 640px); padding:2vh 3vw; background:rgba(20,18,14,.55); border-radius:2px;
    cursor:pointer; transition:transform .25s ease, background .25s ease; }
  #enikkiRoot .galChara:hover { transform:translateY(-3px); background:rgba(30,27,22,.65); }
  #enikkiRoot .galChara img { width:clamp(90px, 16vw, 150px); flex:none;
    filter:drop-shadow(0 8px 24px rgba(0,0,0,.8)); }
  #enikkiRoot .galCharaTxt { text-align:left; }
  #enikkiRoot .galCharaName { font-size:clamp(16px,2.6vw,21px); letter-spacing:.3em; color:#d6d1c8; }
  #enikkiRoot .galCharaName span { font-size:clamp(10px,1.5vw,12px); letter-spacing:.2em;
    color:#7d7870; margin-left:1.2em; }
  #enikkiRoot .galCharaNote { margin-top:1.2em; font-size:clamp(11px,1.7vw,13px);
    letter-spacing:.14em; line-height:2; color:#8f8a83; }
  #enikkiRoot .galImg { width:min(88vw, 760px); border-radius:2px;
    filter:drop-shadow(0 10px 34px rgba(0,0,0,.85)); }
  #enikkiRoot .galImg.tall { width:min(72vw, 430px); }
  #enikkiRoot .galClose { position:fixed; top:3vh; right:4vw; z-index:31;
    font-family:inherit; font-size:clamp(12px,1.7vw,14px); letter-spacing:.25em;
    color:#c9c4bb; background:rgba(2,2,4,.8); border:1px solid #524d45; padding:9px 20px;
    border-radius:2px; cursor:pointer; }

  /* スマホ用の見えるボタン（タッチ端末のみ表示。入力自体は画面全体で受ける）。
     ノッチやホームバーを避けるためセーフエリアぶん逃がす */
  #enikkiRoot #touchBtn { display:none; position:fixed;
    right:calc(5vw + env(safe-area-inset-right, 0px));
    bottom:calc(6vh + env(safe-area-inset-bottom, 0px));
    width:72px; height:72px; border-radius:50%; z-index:15; pointer-events:none;
    border:2px solid rgba(201,196,187,.35); background:rgba(20,18,14,.35);
    color:rgba(201,196,187,.55); font-size:13px; letter-spacing:.2em; text-indent:.2em;
    align-items:center; justify-content:center;
    transition:opacity .5s, background .12s, border-color .12s; }
  #enikkiRoot #touchBtn.on { background:rgba(60,55,48,.6); border-color:rgba(232,228,218,.75);
    color:rgba(232,228,218,.9); }
  @media (pointer:coarse){ #enikkiRoot #touchBtn { display:flex; } }

  /* 縦持ちのタッチ端末にだけ出る、横持ちのおすすめ（操作は塞がない細い帯） */
  #enikkiRoot #rotateHint { display:none; position:fixed; left:0; right:0;
    top:calc(2vh + env(safe-area-inset-top, 0px));
    text-align:center; z-index:16; pointer-events:none;
    font-size:12px; letter-spacing:.2em; color:rgba(201,196,187,.75);
    text-shadow:0 1px 3px rgba(0,0,0,.9);
    animation:enikki-breathe 3.2s ease-in-out infinite; }
  @media (pointer:coarse) and (orientation:portrait){
    #enikkiRoot #rotateHint { display:block; } }

  /* ステージ間の暗転 */
  #enikkiRoot #fadeOv { position:fixed; inset:0; background:#000; opacity:0; pointer-events:none;
    transition:opacity .9s ease; z-index:20; }
  #enikkiRoot #fadeOv.on { opacity:1; }

  /* 導入の紙芝居 */
  #enikkiRoot #introOv { background:#000; padding:0; }
  #enikkiRoot #introFrame { position:relative; width:min(100vw, 177.8vh); aspect-ratio:16/9; overflow:hidden;
    filter:brightness(var(--enikki-bright,1)); }
  #enikkiRoot #introImg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    image-rendering:pixelated; }
  #enikkiRoot #introCap { position:absolute; left:6%; right:6%; bottom:9%; text-align:center;
    font-size:clamp(14px,2vw,19px); letter-spacing:.18em; line-height:2.2; color:#d6d1c8;
    text-shadow:0 1px 4px rgba(0,0,0,.95), 0 0 16px rgba(0,0,0,.85);
    opacity:0; transition:opacity 1.4s ease; }
  #enikkiRoot #introCap.show { opacity:1; }
  #enikkiRoot #introHint { position:absolute; right:4%; bottom:4%;
    font-size:clamp(10px,1.4vw,12px); letter-spacing:.25em; color:#8a857c;
    text-shadow:0 1px 3px rgba(0,0,0,.9);
    animation:enikki-breathe 2.8s ease-in-out infinite; transition:opacity .8s; }
  #enikkiRoot #introFade { position:absolute; inset:0; background:#000; opacity:0;
    transition:opacity .45s ease; pointer-events:none; }
  #enikkiRoot #introFade.on { opacity:1; }

  /* エンドリストの未回収カード */
  #enikkiRoot .endLocked { width:clamp(90px, 16vw, 150px); aspect-ratio:3/2; flex:none;
    display:flex; align-items:center; justify-content:center;
    background:#0d0c0a; color:#5f5a53; font-size:clamp(16px,2.4vw,22px); border-radius:2px; }

  /* クレジット（スタッフロール） */
  #enikkiRoot #creditStage { width:min(88vw,640px); height:62vh; overflow:hidden; position:relative; }
  #enikkiRoot #creditRoll { position:absolute; left:0; right:0; text-align:center; }
  #enikkiRoot .creditLogo { width:min(56vw,300px); margin:0 auto 6vh; display:block;
    filter:drop-shadow(0 6px 22px rgba(0,0,0,.7)); }
  #enikkiRoot .creditRole { font-size:clamp(11px,1.6vw,13px); letter-spacing:.4em;
    color:#7d7870; margin:5vh 0 1em; }
  #enikkiRoot .creditName { font-size:clamp(15px,2.4vw,19px); letter-spacing:.25em;
    color:#d6d1c8; line-height:2.2; }
  #enikkiRoot .creditNote { font-size:clamp(11px,1.6vw,12px); color:#8f8a83;
    letter-spacing:.15em; line-height:2; }
  #enikkiRoot .creditBtn { margin-top:6vh; }
  #enikkiRoot .guideText { width:min(88vw,560px); text-align:left; margin-top:2vh;
    font-size:clamp(12px,1.8vw,14px); line-height:2.1; letter-spacing:.12em; color:#c9c4ba; }
  #enikkiRoot .guideLink { color:#d6d1c8; text-decoration:underline; text-underline-offset:3px; }

  /* 真エンド前の謝罪の試練: 言葉3つが並び、カーソル(▶)が順に巡る（不透明度はJSが操作） */
  #enikkiRoot #endTrialWord { position:absolute; left:6%; right:6%; top:32%; text-align:center;
    display:flex; flex-direction:column; gap:2.6vh;
    font-family:"Hiragino Mincho ProN","Yu Mincho",serif;
    font-size:clamp(18px,3vw,28px); letter-spacing:.22em; color:#e8e4da;
    text-shadow:0 1px 6px rgba(0,0,0,.95), 0 0 22px rgba(0,0,0,.8);
    opacity:0; pointer-events:none; }
  #enikkiRoot #endTrialWord .trialRow { transition:opacity .35s ease; }
  #enikkiRoot #endTrialWord .trialCur { display:inline-block; width:1.5em; text-align:left;
    color:#cfd8ee; }
