
body {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.murakamiradio-fm-main-container {
    min-height: 100vh;
    display: flex;
    flex-direction: column;

    max-width: 450px;
    margin-left: auto;
    margin-right: auto;
    width: 100%; /* 可选，确保在小屏时占满可用空间 */
}

.murakamiradio-fm-image-buttons-container {

    display: flex;

    flex-direction: row;

    justify-content: space-around;

    margin-top: 80px;
    height: 55px;
}

.murakamiradio-fm-image-buttons-container button {

    padding: 5px;
    /*max-width: 40px;默认45大小*/
    max-width: 45px;
    max-height: 45px;

    border: none;

    background-color: transparent;
    /*
 -webkit-tap-highlight-color: 去除 iOS Safari 点击高亮
 transparent 表示透明
 去除移动端点击时的灰色背景
 */
    -webkit-tap-highlight-color: transparent;
}


.fm-jazz-button {
    margin-left: 10px;
}
.fm-book-button {
    margin-right: 10px;
}

.murakamiradio-fm-titles-container {
    display: flex;
    flex-direction: row;

    justify-content: space-around;
}


.murakamiradio-fm-titles-container button {

    border: none;
    background-color: white;
    min-width: 70px;
    max-width: 70px;
    font-size: 16px;
    color: black;

    padding: 0;

    -webkit-tap-highlight-color: transparent;

}

/* 👇 添加这两个样式类 */
.fm-jazz-title {
    margin-left: 10px;
}

.fm-book-title {
    margin-right: 10px;
}


.murakamiradio-fm-grill-container {

    text-align: center;

    margin-top: 5px;

    /*padding: 25px;*/
    padding-top: 25px;
    padding-left: 25px;
    padding-bottom: 25px;
    padding-right: 25px;
}

.grill-image {

    width: 90%;
}

.fm-music-controller-container {
    align-items: flex-start;
    justify-content: flex-end;

    display: flex;
}

.fm-play-button {

    width: 63px;
    height: auto;

    margin-right: 30px;
    margin-top: 16px;
    background: transparent;

    border: none;
}
.play-button-image {

    width: 100%;
    height: auto;
}

.fm-play-button.is-playing {
    /*animation: pulse 1.5s infinite;*/
}

.fm-status-image {

    margin-top: 30px;
    margin-right: 0;

    width: 20px;
    height: 20px;
}

.fm-next-button {

    margin-right: 35px;

    width: 104px;
    height: 114px;

    max-width: 104px;
    max-height: 114px;


    background: transparent;
    /*background: white;*/
    /*background-color: white;*/
    border: none;
    padding: 0;

}

.next-btn-image {
    width: 100%;
    height: auto;
}


.play-button-image {
    width: 62px;
    height: auto;
}

/*
屏幕宽度小于等于 320px
iPhone 4S、iPhone SE1 小手机
*/
@media (max-width: 320px) {

    .murakamiradio-fm-image-buttons-container {
        min-height: 55px;
    }

    .murakamiradio-fm-image-buttons-container button {
        min-width: 45px;
        min-height: 45px;
    }

    .murakamiradio-fm-title-buttons-container button {
        max-width: 60px;
        min-width: 60px;
    }

    .murakamiradio-fm-titles-container button{
        max-width: 60px;
        min-width: 60px;
    }

}

/*
中等偏小尺寸的手机
屏幕宽度在 321px 到 390px 之间
iPhone 12/13 mini, iPhone SE2/3 等
*/
@media (min-width: 321px) and (max-width: 390px) {

    .murakamiradio-fm-image-buttons-container {
        min-height: 65px;
    }

    .murakamiradio-fm-image-buttons-container button {
        max-width: 55px;
        max-height: 55px;
    }
    .murakamiradio-fm-titles-container button {
        max-width: 70px;
        min-width: 70px;
    }

}
/*
大尺寸手机
屏幕宽度在 391px 到 460px 之间
iPhone 12/13/14 Pro Max, 大屏 Android 手机等
*/
@media (min-width: 385px) and (max-width: 460px) {

    .murakamiradio-fm-image-buttons-container {
        min-height: 90px;
        margin-top: 150px;
    }

    .murakamiradio-fm-image-buttons-container button {
        max-width: 80px;
        max-height: 80px;
    }

    .murakamiradio-fm-titles-container button{
        max-width: 80px;
        min-width: 80px;
    }
}


/*
  按钮图片样式
  .button-image 用于按钮内的图片
*/
.button-image {
    /*
      width: 设置宽度
      100% 表示图片宽度占满按钮宽度
    */
    width: 100%;

    /*
      height: 设置高度
      auto 表示高度自动计算，保持图片原始比例
      防止图片变形
    */
    height: auto;

    /*
      display: 设置显示方式
      block 表示块级元素
      去除图片底部的默认空白
    */
    display: block;

    /*
      border-radius: 设置圆角
      6px 表示四个角都是 6 像素的圆角
      与按钮的圆角保持一致
    */
    border-radius: 6px;

    /*
      pointer-events: 设置指针事件
      none 表示图片不响应鼠标事件
      确保点击事件由按钮处理，而不是图片
    */
    pointer-events: none;
}





/*确保背景容器全屏*/
.life-index-container {
    width: 100vw;
    height: 100dvh;/* 动态视口高度，适配手机浏览器工具栏 */
    top: 0;
    left: 0;

    /*改变层级，放在最底层*/
    /*z-index: -1;*/
    /*超出的部分裁切掉*/
    overflow: hidden;

    position: fixed;/* 只有单屏图片时，relative 或 fixed 均可 */
}

.full-screen-link {
    display: block;
    width: 100%;
    height: 100%;

    -webkit-tap-highlight-color: transparent;
}

.bg-image {

    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;
}

/*!* 3. 底部按钮样式 【新增】 *!*/
.enter-murakamiradio {
    /* A. 绝对定位：底部居中 */
    position: absolute;
    bottom: 30px; /* 距离底部 30px */
    left: 50%;
    transform: translateX(-50%); /* 完美的水平居中修正 */

    /* B. 字体设置 */
    color: black; /* 黑色字体 */
    font-family: 'Caveat', cursive, sans-serif; /* 优先用手写体，没有就用草书，再没有就默认 */
    font-size: 24px; /* 字号稍微大一点 */
    font-weight: 600; /* 加粗一点，显得有质感 */
    text-decoration: none; /* 去掉下划线 */
    letter-spacing: 1px;

    /* D. 交互效果 */
    /*transition: all 0.3s ease;*/
    z-index: 10; /* 保证浮在图片上面 */
    -webkit-tap-highlight-color: transparent;

    /*!* 3. 绑定呼吸动画 *!*/
    /*animation: gentle-breath 3s infinite ease-in-out;*/

    /*!* 4. 增强体验：平滑的点击过渡 *!*/
    /*transition: all 0.3s ease;*/

    overflow: hidden; /* 必须加，裁剪光影 */
}

/* 呼吸动画核心 */
@keyframes gentle-breath {
    0%, 100% {
        /* 初始状态：正常大小，淡淡的光影 */
        transform: translateX(-50%) scale(1);
        box-shadow: 0 0 10px rgba(255, 255, 255, 0.1);
        background: rgba(255, 255, 255, 0.15);
    }
    50% {
        /* 呼气状态：轻微放大 4%，光影向外柔和扩散 */
        transform: translateX(-50%) scale(1.04);
        box-shadow: 0 0 25px rgba(255, 255, 255, 0.4);
        background: rgba(255, 255, 255, 0.25); /* 稍微变亮 */
        border-color: rgba(255, 255, 255, 0.7);
    }
}

.enter-murakamiradio::before {
    content: "";
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: linear-gradient(
            45deg,
            transparent,
            rgba(255, 255, 255, 0.3),
            transparent
    );
    transform: rotate(45deg);
    animation: shine-sweep 3s infinite;
}
@keyframes shine-sweep {
    0% { left: -100%; }
    100% { left: 100%; }
}

.enter-murakamiradio:after {
    content: "♪"; /* 增加一个小图标 */
    animation: note-float 2s infinite;
    display: inline-block;
}

@keyframes note-float {
    0%, 100% { transform: translateY(0); opacity: 0.5; }
    50% { transform: translateY(-5px); opacity: 1; }
}
/* app/assets/stylesheets/red_string.css */

:root {
    /* 定义日本传统色：朱色 (Shu-iro) */
    --shiori-red: #cc3333;
    --string-length: 50px;
}

/* 1. 容器：不对称布局的关键 */
.red-string-container {
    position: fixed;
    top: 0;
    right: 12%; /* 放在右侧 15% 的位置，实现不对称美学 */
    z-index: 9999; /* 保证在最上层 */
    display: flex;
    flex-direction: column;
    align-items: center;
    cursor: pointer;
    transition: transform 0.3s ease-out;
}

/* 悬停时的微交互：轻轻向下拉 */
.red-string-container:hover {
    transform: translateY(10px);
}

/* 2. 红线本体 */
.red-string-line {
    width: 2px;
    height: var(--string-length);
    background-color: var(--shiori-red);
    box-shadow: 1px 0 2px rgba(0,0,0,0.1);
}

/* 3. 绳结 (圆形) */
.red-string-knot {
    position: relative;
    width: 10px;
    height: 10px;
    background-color: var(--shiori-red);
    border-radius: 50%;
    margin-top: -2px; /* 让线插在球里 */
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

/* 4. 流苏 (Tassels) - 纯 CSS 绘制 */
.red-string-tassel {
    position: absolute;
    top: 8px; /* 从球的下半部分伸出来 */
    background-color: rgba(204, 51, 51, 0.8); /* 稍微透明一点 */
    width: 1px;
}

.tassel-center {
    height: 24px;
    left: 50%;
    transform: translateX(-50%);
}

.tassel-left {
    height: 20px;
    left: 50%;
    transform: translateX(-50%) rotate(15deg); /* 向左撇 */
    transform-origin: top center;
}

.tassel-right {
    height: 20px;
    left: 50%;
    transform: translateX(-50%) rotate(-15deg); /* 向右撇 */
    transform-origin: top center;
}

/* 5. 提示文字 "引く" */
.red-string-text {
    margin-top: 25px;
    font-size: 12px;
    color: #888;
    font-family: "Noto Serif JP", serif; /* 确保引入了衬线体 */
    opacity: 0;
    transition: opacity 0.5s ease;

    /* 竖排文字的关键 CSS */
    writing-mode: vertical-rl;
    text-orientation: upright;
    letter-spacing: 0.2em;
}

/* 鼠标悬停时显示文字 */
.red-string-container:hover .red-string-text {
    opacity: 1;
}

/* --- Kumihimo Red String Design System --- */
/*:root {*/
/*    --kumi-red: #cc3333;       !* 朱红 *!*/
/*    --kumi-dark: #992222;      !* 深红 *!*/
/*    --kumi-glass: rgba(140, 20, 20, 0.4); !* 琉璃感 *!*/
/*    --kumi-ink: #4a5d75;       !* 昭和蓝 *!*/
/*}*/

/*.red-string-container {*/
/*    position: absolute;*/
/*    top: 0;*/
/*    right: 15%; !* 根据布局调整位置 *!*/
/*    width: 4px; !* 容器宽度 *!*/
/*    z-index: 50;*/
/*    display: flex;*/
/*    flex-direction: column;*/
/*    align-items: center;*/
/*    !* 防止选中文字干扰拖拽 *!*/
/*    user-select: none;*/
/*    -webkit-user-select: none;*/
/*}*/

/*!* 1. 绳体：编织纹理 *!*/
/*.red-string-line {*/
/*    width: 4px;*/
/*    height: 128px; !* 初始长度 *!*/
/*    background-color: var(--kumi-red);*/
/*    box-shadow: 1px 0 2px rgba(0,0,0,0.1);*/
/*    position: relative;*/
/*    !* 确保纹理随高度拉伸或重复 *!*/
/*    overflow: hidden;*/
/*    transform-origin: top center;*/
/*}*/

/*.cord-texture {*/
/*    width: 100%;*/
/*    height: 100%;*/
/*    opacity: 0.6;*/
/*    !* 45度重复渐变模拟绞绳感 *!*/
/*    background-image: repeating-linear-gradient(*/
/*            45deg,*/
/*            transparent,*/
/*            transparent 2px,*/
/*            rgba(0, 0, 0, 0.2) 2px,*/
/*            rgba(0, 0, 0, 0.2) 3px*/
/*    );*/
/*}*/

/*!* 2. 绳结组件：整体容器 *!*/
/*.red-string-knot-group {*/
/*    position: relative;*/
/*    display: flex;*/
/*    flex-direction: column;*/
/*    align-items: center;*/
/*    !* 初始位置修正，紧接绳体下方 *!*/
/*    margin-top: -2px;*/
/*    pointer-events: none; !* 视觉元素不阻挡交互 *!*/
/*}*/

/*!* 琉璃珠 (Ojime) *!*/
/*.kumihimo-bead {*/
/*    position: relative;*/
/*    z-index: 2;*/
/*    width: 16px;*/
/*    height: 16px;*/
/*    border-radius: 50%;*/
/*    background-color: var(--kumi-glass);*/
/*    backdrop-filter: blur(2px);*/
/*    border: 1px solid rgba(160, 40, 40, 0.3);*/
/*    box-shadow: inset 2px 2px 4px rgba(0,0,0,0.3),*/
/*    inset -1px -1px 2px rgba(255,255,255,0.2),*/
/*    0 2px 4px rgba(0,0,0,0.1);*/
/*    margin-bottom: -4px;*/
/*}*/

/*.bead-highlight {*/
/*    position: absolute;*/
/*    top: 25%;*/
/*    left: 25%;*/
/*    width: 4px;*/
/*    height: 4px;*/
/*    background-color: rgba(255, 100, 100, 0.6);*/
/*    border-radius: 50%;*/
/*    filter: blur(1px);*/
/*}*/

/*!* 绳结环 *!*/
/*.kumihimo-loop {*/
/*    width: 12px;*/
/*    height: 12px;*/
/*    border: 2px solid var(--kumi-red);*/
/*    border-radius: 50%;*/
/*    transform: scaleX(0.75) translateY(-2px);*/
/*    z-index: 1;*/
/*}*/

/*!* 丝绸流苏 (Fusa) *!*/
/*.kumihimo-tassel {*/
/*    position: relative;*/
/*    margin-top: -4px;*/
/*    opacity: 0.95;*/
/*}*/

/*.tassel-core, .tassel-strand {*/
/*    background-color: var(--kumi-red);*/
/*    position: absolute;*/
/*    top: 0;*/
/*    left: 50%;*/
/*    transform-origin: top center;*/
/*    box-shadow: 0 1px 2px rgba(0,0,0,0.1);*/
/*}*/

/*!* 主束 *!*/
/*.tassel-core {*/
/*    width: 2px;*/
/*    height: 48px;*/
/*    transform: translateX(-50%);*/
/*}*/

/*!* 侧边散丝 - 制造蓬松感 *!*/
/*.tassel-strand {*/
/*    width: 1px;*/
/*    height: 40px;*/
/*    opacity: 0.8;*/
/*}*/

/*.s1 { transform: translateX(-50%) rotate(3deg); height: 42px; }*/
/*.s2 { transform: translateX(-50%) rotate(-3deg); height: 42px; }*/
/*.s3 { transform: translateX(-50%) rotate(6deg); height: 38px; opacity: 0.6; }*/
/*.s4 { transform: translateX(-50%) rotate(-6deg); height: 38px; opacity: 0.6; }*/

/*!* 流苏末端虚化 *!*/
/*.tassel-fade {*/
/*    position: absolute;*/
/*    top: 42px;*/
/*    left: 50%;*/
/*    transform: translateX(-50%);*/
/*    width: 12px;*/
/*    height: 10px;*/
/*    background: linear-gradient(to bottom, var(--kumi-red), transparent);*/
/*    opacity: 0.3;*/
/*    filter: blur(2px);*/
/*}*/

/*!* 3. 文字 *!*/
/*.red-string-text {*/
/*    margin-top: 80px; !* 避开绳结 *!*/
/*    font-family: 'Noto Serif JP', serif;*/
/*    font-size: 10px;*/
/*    color: var(--kumi-ink);*/
/*    letter-spacing: 0.2em;*/
/*    opacity: 0.5;*/
/*    mix-blend-mode: multiply;*/
/*    writing-mode: vertical-rl;*/
/*    text-orientation: upright;*/
/*    pointer-events: none;*/
/*}*/
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */


/* 彻底清除浏览器默认边距 */
html, body {
    margin: 0 !important; /* 强制清除 body 的 8px 边距 */
    padding: 0 !important;
}
