@charset "utf-8";

/* ==================================================
   1. Reset & Base Styles
   ================================================== */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {margin:0; padding:0;}
table { border-collapse:collapse; border-spacing:0;}
fieldset,img { border:0; vertical-align:bottom;}
address,caption,cite,code,dfn,em,strong,th,var {font-style:normal; font-weight:normal;}
ol,ul { list-style:none; padding:0; margin:0;}
caption,th { text-align:left;}
h1,h2,h3,h4,h5,h6 {font-size:100%; font-weight:normal;}
q:before,q:after {content:'';}
abbr,acronym { border:0;}

/* Typography */
body {
    font-size: 16px;
    line-height: 1.8;
    background: url(../img/miro_bg_kai.jpg) 0 0 #fff;
    background-repeat: repeat;
    -moz-background-size: contain;
    background-size: contain;
    /* iPhoneでの文字サイズ自動調整を防ぐ */
    -webkit-text-size-adjust: 100%;
}

a { color:#917CA3; text-decoration:underline; outline:none; }
a:hover { color:#FF9900; text-decoration:underline; outline:none; }

/* Utility */
.clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; }
.clearfix { display:block; }


/* ==================================================
   2. Layout (Header, Footer, Wrapper)
   ================================================== */
div#wrapper {
    margin: 0 auto;
    text-align: left;
    width: 100%;
    max-width: 960px;
    overflow: hidden;
}

/* Header */
div#header {
    width: 100%;
    margin: 4px auto 0;
    text-align: left;
    padding: 0 15px;
    box-sizing: border-box;
    position: relative;
    min-height: 85px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/* Header Logo */
div#header h1 {
    width: 300px;
    height: 85px;
    padding: 0;
    margin: 0;
}
div#header h1 a {
    display: block;
    width: 100%;
    height: 100%;
    background: url("../img/logo.png") no-repeat scroll left center rgba(0, 0, 0, 0);
    background-size: contain;
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-decoration: none;
    outline: none;
}

/* Global Navigation (PC) */
div#header ul#gNavi { margin-bottom: 0; padding-bottom: 0; }
ul#gNavi li { display: block; float: left; }
div#header ul#gNavi li a {
    font-size: 15px;
    color: #666;
    text-decoration: none;
    display: block;
    padding: 30px 15px;
}
div#header ul#gNavi li a:hover { background: #fff; }

/* Hamburger Menu (Hidden on PC) */
#hamburger-button { display: none; }

/* Footer */
div#footer { text-align: center; padding: 15px; }
div#footer p#copyright {
    text-align: center;
    padding: 10px;
    color: #333;
    font-family: "lucida grande", tahoma, verdana, arial, sans-serif!important;
}


/* ==================================================
   3. Key Visual (TOP Page)
   ================================================== */
div#mainImgBox {
    /* PC Layout Default */
    min-height: 381px;
    background-image: url(../../index/img/mainimg2.jpg);
    background-position: right center;
    background-size: 520px 565px;
    background-repeat: no-repeat;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    padding: 0;
}

#mainMessageBox {
    width: 570px;
    max-width: none;
    background-color: rgba(255,255,255,0.9);
    padding: 40px 45px;
}

.kv-catchphrase {
    font-family: 'Shippori Mincho', serif;
    font-size: 36px;
    font-weight: bold;
    line-height: 1.6;
    color: #444;
    margin-bottom: 25px;
    padding-left: 25px;
    border-left: 5px solid #A084C4;
}

.kv-description {
    font-size: 16px;
    line-height: 2;
    color: #555;
}


/* ==================================================
   4. Top Page Content Components
   ================================================== */
div#mainContents {
    width: 100%;
    padding: 45px 30px;
    margin: 0 auto 20px;
    text-align: left;
    background: rgba(255,255,255,0.85);
    border: 1px solid #dedede;
    box-sizing: border-box;
}

/* Headings in MainContents */
div#mainContents h2 {
    background: url(../../share/img/bg_ch.gif) repeat-x 0 0;
    font-size: 18px;
    letter-spacing: 0.1em;
    margin-bottom: 15px;
    min-height: 45px;
}
div#mainContents h2 span {
    background: url(../../share/img/bg_ch_top.gif) no-repeat top left;
    padding: 4px 0 6px 22px;
    display: block;
    font-weight: bold;
    text-shadow: 1px 0 0.5px #fff;
}
div#mainContents strong {
    display: block;
    margin-bottom: 7px;
    font-weight: bold;
    font-size: 1.1em;
}

/* Works Gallery */
.works-gallery { margin-top: 20px; }
.work-item {
    display: flex;
    align-items: center;
    margin-bottom: 40px;
    flex-wrap: wrap;
}
.work-item:nth-child(even) { flex-direction: row-reverse; }
.work-item .work-image { flex: 1; min-width: 300px; padding: 10px; }
.work-item .work-image img { max-width: 100%; height: auto; display: block; margin: 0 auto; }
.work-item .work-text { flex: 1; min-width: 300px; padding: 10px 20px; }
.work-item .work-caption { font-size: 15px; margin-top: 10px; }
.work-item:nth-child(even) .work-caption { text-align: right; }

/* Customers' Voice */
.voice-container { padding: 0 10px; }
.voice-item {
    background: #fff;
    border: 1px dashed #ccc;
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 20px;
    display: flex;
    align-items: flex-start;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.voice-icon { width: 60px; margin-right: 15px; flex-shrink: 0; }
.voice-icon img { width: 100%; border-radius: 50%; }
.voice-content { flex: 1; }
.voice-text {
    font-size: 15px; line-height: 1.8; color: #444; margin-bottom: 10px; position: relative;
}
.voice-text::before {
    content: "“"; font-family: serif; font-size: 40px; color: #ddd;
    position: absolute; top: -10px; left: -15px; line-height: 1;
}
.voice-attr {
    font-size: 14px; color: #A084C4; text-align: right; font-weight: bold;
}

/* FAQ */
.faq-list { margin: 0 10px; }
.faq-question {
    background: #f9f9f9; padding: 15px; border-radius: 5px; margin-bottom: 10px;
    font-weight: bold; color: #333; position: relative; cursor: default; line-height: 1.6;
}
.faq-mark {
    display: inline-block; background: #A084C4; color: #fff; width: 24px; height: 24px;
    line-height: 24px; text-align: center; border-radius: 50%; margin-right: 10px; font-size: 14px;
}
.faq-answer {
    padding: 10px 15px 30px; margin-bottom: 10px; border-bottom: 1px solid #eee;
    color: #555; line-height: 1.8; display: flex;
}
.faq-mark-a {
    display: inline-block; color: #A084C4; font-weight: bold; font-size: 18px;
    margin-right: 15px; margin-left: 5px; line-height: 1.4;
}
.faq-text { flex: 1; }

/* Info Titles (Top Page Bottom) */
h3.info-title {
    background: #000; color: #fff; font-size: 20px; padding: 5px 10px;
    margin-bottom: 15px; font-weight: bold; border-radius: 3px;
}
.info-text-box { margin: 15px 0 40px 10px; line-height: 1.8; }
@media (min-width: 769px) {
    .info-text-box { font-size: 20px; }
}

/* CTA Button */
.cta-button-container { text-align: center; margin: 30px 0; }
.cta-button {
    display: inline-block; padding: 15px 40px; font-size: 18px; font-weight: bold;
    color: #fff !important; background-color: #A084C4; text-decoration: none;
    border-radius: 50px; box-shadow: 0 4px 10px rgba(0,0,0,0.15); transition: all 0.3s ease;
}
.cta-button:hover {
    background-color: #886EAA; box-shadow: 0 6px 12px rgba(0,0,0,0.2); transform: translateY(-2px);
}


/* ==================================================
   5. Swiper Slider (Consolidated)
   ================================================== */
.swiper-container {
    width: 100%; height: auto; margin-top: 0px; padding: 0 0 35px;
    position: relative; overflow: hidden;
}
.swiper-slide {
    box-sizing: border-box; padding: 10px; padding-bottom: 45px;
    border-radius: 3px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    position: relative; height: auto; transition: background-color 0.3s ease;
    /* Centering */
    display: flex; justify-content: center; align-items: center;
}
/* Slide Colors */
.swiper-slide:nth-child(6n + 1) { background-color: #F4C2C2; }
.swiper-slide:nth-child(6n + 2) { background-color: #A2D2FF; }
.swiper-slide:nth-child(6n + 3) { background-color: #C8E6C9; }
.swiper-slide:nth-child(6n + 4) { background-color: #FFEE93; }
.swiper-slide:nth-child(6n + 5) { background-color: #FFDAB9; }
.swiper-slide:nth-child(6n + 6) { background-color: #D8BFD8; }

.swiper-slide img {
    display: block; width: 100%; height: auto; object-fit: cover;
    border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.slide-caption {
    box-sizing: border-box; position: absolute; bottom: 10px; left: 10px;
    width: calc(100% - 20px); background-color: transparent;
    color: #555; text-align: center; padding: 0; font-size: 13px; border-radius: 0;
}
.swiper-pagination-bullet-active { background: #917CA3 !important; }

/* Arrows */
.swiper-button-next, .swiper-button-prev {
    width: 44px; height: 44px; background-color: rgba(255, 255, 255, 0.85);
    border-radius: 50%; box-shadow: 0 2px 5px rgba(0,0,0,0.15);
    transition: background-color 0.2s ease; color: #78C2C4 !important;
}
.swiper-button-next:hover, .swiper-button-prev:hover { background-color: rgba(255, 255, 255, 1); }
.swiper-button-next svg, .swiper-button-prev svg { width: 18px !important; height: 18px !important; }

/* SP Fix */
@media (max-width: 639px) {
    .swiper-slide { width: 100% !important; flex-shrink: 0 !important; }
}


/* ==================================================
   6. Sub Page Common & Specifics
   ================================================== */
#subPageWrapper {
    width: 100%; padding: 40px 20px; box-sizing: border-box; min-height: 60vh;
}
.content-container { max-width: 960px; margin: 0 auto; }

/* Page Title h2 */
h2.page-title {
    font-family: 'Shippori Mincho', serif; font-size: 24px; color: #333;
    margin-bottom: 30px; padding-bottom: 10px; border-bottom: 2px solid #A084C4;
}
@media (min-width: 769px) {
    h2.page-title { font-size: 28px; margin-bottom: 40px; }
}

/* Common h3 for subpages */
#subPageWrapper h3 {
    font-size: 20px; color: #333; font-weight: bold; margin-bottom: 20px;
    padding-left: 10px; border-left: 5px solid #A084C4;
}

/* Link Page */
.link-item { margin-bottom: 30px; padding-bottom: 20px; border-bottom: 1px dashed #ccc; }
.link-item:last-child { border-bottom: none; }
.link-item h3 { border: none; padding: 0; font-size: 18px; margin-bottom: 10px; }
.link-item h3 a { color: #007bff; text-decoration: none; }
.link-item p { font-size: 15px; line-height: 1.8; color: #555; }

/* Access Page */
.access-step { margin-bottom: 50px; border-bottom: 1px dashed #ccc; padding-bottom: 40px; }
.access-step:last-child { border-bottom: none; }
.step-image, .info-top-image { margin-bottom: 20px; text-align: center; }
.step-image img, .info-top-image img {
    width: 100%; max-width: 100%; height: auto;
    border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    display: block; margin: 0 auto;
}
.step-text p { font-size: 15px; line-height: 1.8; color: #444; }
.step-text .location-name { font-weight: bold; font-size: 18px; margin-bottom: 10px; }
.step-text .address {
    font-weight: bold; font-size: 16px; margin-bottom: 10px;
    background: #f9f9f9; padding: 15px; border-radius: 5px;
}

/* Info (Contact) Page Specifics */
.info-section { margin-bottom: 40px; } /* 間隔を広めに */
.info-section h3 { margin-bottom: 10px !important; } /* 見出し下の隙間を調整 */
.info-section p { font-size: 15px; line-height: 2.0; color: #444; }
.info-section .note { color: #d9534f; font-size: 14px; }

/* PCでのInfoページ調整 */
@media (min-width: 769px) {
    .info-section p { font-size: 18px; }
    .tel-number { font-size: 28px; }
    .tel-number a { color: #333; text-decoration: none; pointer-events: none; }
    /* トップ画像をPCのみ制限 */
    .info-top-image img {
        max-width: 600px !important; width: auto !important; margin: 0 auto;
    }
}

/* Tel Box */
.tel-box {
    margin-top: 15px; background: #fdfdfd; padding: 15px;
    border: 1px dashed #ccc; border-radius: 5px;
}
.tel-number { font-size: 22px; font-weight: bold; color: #333; margin-top: 5px; }
.tel-name { font-size: 14px; font-weight: normal; }


/* ==================================================
   7. Mail Form (Optimized & Robust)
   ================================================== */
#mf_wrapper {
    margin-top: 50px; background: #fff; padding: 20px;
    border-radius: 5px; box-shadow: 0 0 10px rgba(0,0,0,0.05);
    box-sizing: border-box !important; width: 100% !important; overflow: hidden;
}
#mf_header h1 {
    font-size: 20px; border-bottom: 2px solid #eee; padding-bottom: 10px;
    margin-bottom: 20px; text-align: center; color: #555;
}

/* Table Settings */
table.mail_form_table { width: 100% !important; border-collapse: collapse; table-layout: fixed; }
table.mail_form_table th, table.mail_form_table td {
    padding: 15px 10px; border-bottom: 1px solid #eee; text-align: left; vertical-align: top;
    box-sizing: border-box !important; word-break: break-all;
}
table.mail_form_table th { width: 30%; background: #f9f9f9; font-weight: bold; color: #555; }

/* Inputs (Force 16px to prevent iOS zoom) */
.mf-input, .mf-textarea, .mf-input-short {
    font-size: 16px !important;
    width: 100% !important; max-width: 100% !important; min-width: 0 !important;
    padding: 10px !important; border: 1px solid #ccc !important; border-radius: 4px;
    margin: 0 0 5px 0 !important; box-sizing: border-box !important;
    -webkit-appearance: none;
}
.mf-textarea { height: 150px; }
.mf-input-short { width: 80px !important; }

/* Form Buttons */
.btn-submit, .btn-reset {
    background: #A084C4; color: #fff; border: none; padding: 15px 30px !important;
    font-size: 16px; border-radius: 5px; cursor: pointer;
    -webkit-appearance: none; box-sizing: border-box !important;
    line-height: 1.5 !important; height: auto !important; vertical-align: middle !important;
}
.btn-reset { background: #ccc; padding: 15px 20px !important; margin-left: 10px; }
.btn-submit:hover { opacity: 0.8; }


/* ==================================================
   8. Media Queries for Mobile (General & Overrides)
   ================================================== */
@media (max-width: 768px) {
    /* Basic Text */
    body { font-size: 15px; }
    
    /* Header & Logo */
    div#header { padding: 0 10px; min-height: 60px; }
    div#header h1 { width: 200px; height: 60px; padding-left: 10px; }

    /* Key Visual */
    div#mainImgBox {
        position: relative; min-height: 300px;
        background: url(../../index/img/mainimg2.jpg) no-repeat center center;
        background-size: cover;
        justify-content: center; padding: 20px;
    }
    #mainMessageBox {
        width: 100%; max-width: 500px; background-color: rgba(255, 255, 255, 0.8);
        padding: 25px 20px; border-radius: 5px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    }
    .kv-catchphrase {
        font-size: 26px; font-weight: 700; margin-bottom: 20px; padding-left: 20px;
        border-left: 4px solid #A084C4; text-shadow: 0px 1px 3px rgba(255, 255, 255, 0.85);
    }
    .kv-description {
        font-size: 16px; line-height: 2.0; font-weight: 500;
        text-shadow: 0px 1px 3px rgba(255, 255, 255, 0.85);
    }

    /* Hamburger Menu */
    #hamburger-button {
        display: block; position: absolute; top: 15px; right: 15px;
        width: 30px; height: 30px; cursor: pointer; z-index: 100;
    }
    #hamburger-button span {
        display: block; position: absolute; left: 0; width: 100%; height: 2px;
        background-color: #666; transition: all 0.3s;
    }
    #hamburger-button span:nth-of-type(1) { top: 5px; }
    #hamburger-button span:nth-of-type(2) { top: 14px; }
    #hamburger-button span:nth-of-type(3) { bottom: 5px; }
    #hamburger-button.open span:nth-of-type(1) { top: 14px; transform: rotate(45deg); }
    #hamburger-button.open span:nth-of-type(2) { opacity: 0; }
    #hamburger-button.open span:nth-of-type(3) { top: 14px; transform: rotate(-45deg); }

    /* Sp Navigation */
    ul#gNavi {
        display: none; position: absolute; top: 60px; left: 0; width: 100%;
        background-color: rgba(255, 255, 255, 0.95); z-index: 99;
    }
    ul#gNavi.open { display: block; }
    ul#gNavi li { float: none; width: 100%; text-align: center; border-bottom: 1px solid #ddd; }
    div#header ul#gNavi li a { padding: 15px; }

    /* Content Area */
    div#mainContents { padding: 20px 15px; }
    div#mainContents div[style] { font-size: 1em !important; margin: 15px 0 !important; }

    /* Works Gallery Stack */
    .work-item, .work-item:nth-child(even) { flex-direction: column; }
    .work-item .work-text { padding: 15px 0; }
    .work-item:nth-child(even) .work-caption, .work-item .work-caption { text-align: left; }

    /* Voice Item Stack */
    .voice-item { flex-direction: column; }
    .voice-icon { margin-bottom: 10px; }
    .voice-text::before { display: none; }

    /* Phone Link Active */
    .tel-number a { pointer-events: auto; color: #007bff; text-decoration: underline; }
}

@media (max-width: 640px) {
    /* Mail Form Responsive Stack */
    table.mail_form_table, table.mail_form_table tbody, table.mail_form_table tr,
    table.mail_form_table th, table.mail_form_table td {
        display: block !important; width: 100% !important; box-sizing: border-box !important;
        float: none !important; padding-left: 0 !important; padding-right: 0 !important;
    }
    table.mail_form_table th { background: #f0f0f0; border-bottom: none; padding: 10px !important; }
    table.mail_form_table td { padding: 0 0 20px 0 !important; }
    
    .tamidashi { text-align: center; background: none; padding: 10px; }
    .submit-area-th { display: none !important; }
    .submit-area-td { text-align: center; }
    .btn-wrap { width: 100% !important; padding: 0 10px; box-sizing: border-box !important; }

    .btn-submit, .btn-reset {
        display: block !important; width: 100% !important;
        margin: 0 0 15px 0 !important; margin-left: 0 !important;
        padding: 15px 0 !important; max-width: none !important;
    }
}