@charset "UTF-8";

/* ==========================================================================
   RESET
   ========================================================================== */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
body { line-height: 1; -webkit-text-size-adjust: 100%; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; }
table { border-collapse: collapse; border-spacing: 0; }
a { text-decoration: none; color: inherit; }
img { max-width: 100%; height: auto; display: block; }
* { box-sizing: border-box; }

/* ==========================================================================
   TOKENS & BASE
   ========================================================================== */
:root {
    --primary-color: #E4AB3A;
    --text-color: #333;
    --bg-color: #fff;
    --font-mincho: "ヒラギノ明朝 Pro W3", "Hiragino Mincho Pro", "ＭＳ Ｐ明朝", "MS PMincho", serif;
    --font-gothic: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, sans-serif;
    --font-en: 'Albert Sans', sans-serif;
}

body {
    font-family: var(--font-gothic);
    color: var(--text-color);
    background-color: var(--bg-color);
    line-height: 1.6;
    overflow-x: hidden;
}

/* ==========================================================================
   LAYOUT SYSTEM (.inner, .flex_box)
   ========================================================================== */
.inner {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 20px;
    width: 100%;
}

.flex_box {
    display: flex;
    flex-wrap: wrap;
}

/* Gaps */
.gap_10 { margin: -5px; } .gap_10 > * { padding: 5px; }
.gap_20 { margin: -10px; } .gap_20 > * { padding: 10px; }
.gap_30 { margin: -15px; } .gap_30 > * { padding: 15px; }
.gap_40 { margin: -20px; } .gap_40 > * { padding: 20px; }
.gap_50 { margin: -25px; } .gap_50 > * { padding: 25px; }

/* Columns */
.flex_box__item.d2 { width: 50%; }
.flex_box__item.d3 { width: 33.33%; }
.flex_box__item.d4 { width: 25%; }
.flex_box__item.d5 { width: 20%; }

/* Alignments */
.jc_center { justify-content: center; }
.jc_between { justify-content: space-between; }
.ai_center { align-items: center; }

/* Mobile Overrides (768px) */
@media screen and (max-width: 768px) {
    .gap_20_sp { margin: -10px; } .gap_20_sp > * { padding: 10px; }
    .gap_30_sp { margin: -15px; } .gap_30_sp > * { padding: 15px; }
    .flex_box__item.d1_sp { width: 100%; }
    .flex_box__item.d2_sp { width: 50%; }
}

/* ==========================================================================
   UTILITY CLASSES
   ========================================================================== */
/* Margins (EM base) */
.mrg__top1 { margin-top: 1em; }
.mrg__top2 { margin-top: 2em; }
.mrg__top3 { margin-top: 3em; }
.mrg__top4 { margin-top: 4em; }
.mrg__top5 { margin-top: 5em; }
.mrg__top8 { margin-top: 8em; }

.mrg__btm1 { margin-bottom: 1em; }
.mrg__btm2 { margin-bottom: 2em; }
.mrg__btm3 { margin-bottom: 3em; }
.mrg__btm5 { margin-bottom: 5em; }

/* Padding */
.pad__top3 { padding-top: 3em; }
.pad__top4 { padding-top: 4em; }
.pad__top5 { padding-top: 5em; }
.pad__top8 { padding-top: 8em; }

.pad__btm3 { padding-bottom: 3em; }
.pad__btm4 { padding-bottom: 4em; }
.pad__btm5 { padding-bottom: 5em; }

.pad__left4 { padding-left: 4em; }
.pad__right4 { padding-right: 4em; }

/* Mobile Overrides */
@media screen and (max-width: 768px) {
    .pad__sp_top2 { padding-top: 2em; }
    .pad__sp_btm2 { padding-bottom: 2em; }
    .pad__sp_left2 { padding-left: 2em; }
    .pad__sp_right2 { padding-right: 2em; }
    .mrg__sp_top1 { margin-top: 1em; }
    .mrg__sp_btm2 { margin-bottom: 2em; }
    .w100p_sp { width: 100% !important; }
    .w80_sp { width: 80% !important; }
}

/* Typography */
.fs_12 { font-size: 1.2rem; }
.fs_14 { font-size: 1.4rem; }
.fs_15 { font-size: 1.5rem; }
.fs_16 { font-size: 1.6rem; }
.fs_30 { font-size: 3.0rem; }

@media screen and (max-width: 768px) {
    .fs_14_sp { font-size: 1.4rem; }
    .fs_24_sp { font-size: 2.4rem; }
}

.fw_400 { font-weight: 400; }
.fw_600 { font-weight: 600; }

.ff { font-family: var(--font-mincho); }
.ff_en { font-family: var(--font-en); }

.lh_18 { line-height: 1.8; }
.txt_center { text-align: center; }
.img_center { margin-left: auto; margin-right: auto; }

/* Widths */
.w100 { width: 100px; }
.w220 { width: 220px; }
.w300 { width: 300px; }
.w750 { width: 750px; }
.w100p { width: 100%; }

/* ==========================================================================
   COMPONENTS (Standardized)
   ========================================================================== */
.btn_1 {
    display: inline-block;
    background-color: var(--primary-color);
    color: #fff;
    padding: 1.2em 3em;
    border-radius: 5px;
    font-weight: 600;
    transition: all 0.3s;
    position: relative;
}
.btn_1:hover {
    opacity: 0.8;
    transform: translateY(-2px);
}
.btn_arrow i {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-top: 2px solid #fff;
    border-right: 2px solid #fff;
    transform: rotate(45deg);
    margin-left: 10px;
    vertical-align: middle;
}

.fade {
    transition: opacity 0.3s;
}
.fade:hover {
    opacity: 0.7;
}

.shadow {
    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}

/* ==========================================================================
   ANIMATIONS (Waypoints)
   ========================================================================== */
.waypoint {
    opacity: 0;
    transition: all 0.8s cubic-bezier(0.2, 0, 0.2, 1);
}
.waypoint.is-active {
    opacity: 1;
    transform: translate(0, 0) !important;
}

.waypoint__fadeUp { transform: translateY(30px); }
.waypoint__fadeIn { transform: scale(0.95); }
.waypoint__slideLeft { transform: translateX(-30px); }

.delay_02 { transition-delay: 0.2s; }
.delay_04 { transition-delay: 0.4s; }
.delay_06 { transition-delay: 0.6s; }

/* Simulation of waypoint trigger for static display (since no JS is allowed) */
/* In a real scenario, JS would add .is-active. For pure CSS demo, we might use Scroll-driven animations if supported, but here we just set them visible for now or assume a tiny bit of CSS logic if possible. */
/* User rule says "Do not output JavaScript." so I'll make them visible by default for the demo or use a simple CSS animation that doesn't strictly depend on scroll triggered JS if I must, but the rule asks for .waypoint classes. */
.waypoint { opacity: 1; transform: none !important; } /* Overriding for manual visibility in static html */

/* ==========================================================================
   CUSTOM SECTION STYLES (.sec_X)
   ========================================================================== */

.sec_1 {
    min-height: 100vh;
    display: flex;
    align-items: center;
    background: url(../images/bg_paper.jpg) repeat;
    padding: 5em 0;
}

#gnav {
    background: url(../images/bar.png) no-repeat center top;
    padding-top: 10px;
}
#gnav ul {
    background: url(../images/bar.png) no-repeat center bottom;
    padding-bottom: 10px;
}

.sec_2 {
    background-color: #fff;
}
.concept_img {
    border: 10px solid #f9f9f9;
}

.sec_3 {
    background: url(../images/bg_paper.jpg) repeat;
}

.point_card {
    border: 1px dotted var(--primary-color);
    padding: 3em 2em;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.point_card p {
    width: 100%;
}

.sec_4 {
    background-color: #fff;
}
.profile_box {
    background: url(../images/bg_paper.jpg) repeat;
    border: 1px solid #ddd;
    position: relative;
}
.profile_box::before {
    content: "";
    position: absolute;
    top: 5px; left: 5px; right: 5px; bottom: 5px;
    border: 1px dotted var(--primary-color);
    pointer-events: none;
}

.sec_5 {
    background: url(../images/bg_paper.jpg) repeat;
}
footer {
    border-top: 1px solid #ccc;
    padding-top: 2em;
}

/* ==========================================================================
   SCSS Nesting Simulation (Custom Styles for Sections)
   ========================================================================== */
.sec_1 #hero_illust img { border: none; box-shadow: none; }

@media screen and (max-width: 768px) {
    html { font-size: 10px; } /* Reset for rem */
}
 @media screen and (min-width: 769px) {
    html { font-size: 10px; }
}
