@charset "UTF-8";

/* ================================================
   Global Styles — Aerolab International
   Applied site-wide across all pages.
   Covers: design tokens, CSS reset, typography,
   layout helpers, form elements, and utility classes.
   ================================================ */

/* ── Google Fonts import ── */
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;700&family=Dancing+Script:wght@700&display=swap");


/* ── Design tokens ── */
:root {
    /* ── Brand colours ── */
    --color-bg:      #000;
    --color-surface: #0d0e1a;
    --color-text:    #fff;
    --color-muted:   rgba(255, 255, 255, 0.6);

    /* ── Page / component colours ── */
    --primary-color:   #2d2f4e;
    --secondary-color: #4a4c7e;
    --accent-color:    var(--primary-color);
    --light-bg:        #f2f6ff;
    --text-dark:       #2d2f4e;
    --text-light:      var(--text-dark);
    --border-color:    rgba(0, 0, 0, 0.08);

    /* ── Gradients ── */
    --gradient-dark: linear-gradient(135deg, #2d2f4e 0%, #0d0e1a 100%);

    /* ── Shadows ── */
    --shadow:
        6px 6px 0 0 rgba(0, 0, 0, 0.20),
        12px 12px 0 0 rgba(0, 0, 0, 0.11),
        18px 18px 0 0 rgba(0, 0, 0, 0.05);
    --shadow-lg:
        11px 11px 0 0 rgba(0, 0, 0, 0.20),
        17px 17px 0 0 rgba(0, 0, 0, 0.11),
        23px 23px 0 0 rgba(0, 0, 0, 0.05);

    /* ── Radius ── */
    --radius:    4px;
    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 12px;

    /* ── Typography ── */
    --font-primary: "Noto Sans JP", sans-serif;
    --font-accent:  "Dancing Script", cursive;

    --font-size-xs:  0.75rem;
    --font-size-sm:  0.875rem;
    --font-size-base: 1rem;
    --font-size-md:  1.125rem;
    --font-size-lg:  1.375rem;
    --font-size-xl:  2rem;
    --font-size-2xl: 2.75rem;
    --font-size-3xl: 3.5rem;

    /* ── Spacing ── */
    --space-xs:      0.5rem;
    --space-sm:      0.75rem;
    --space-md:      1.5rem;
    --space-lg:      2.5rem;
    --space-xl:      4rem;
    --space-section: 5rem;

    /* ── Z-index ── */
    --z-raised:  10;
    --z-nav:     10000;
    --z-overlay: 10000000000;

    /* ── Transitions ── */
    --transition:      0.3s ease;
    --transition-fast: 0.15s ease;
}

/* ── Box sizing ── */

*,
*::before,
*::after {
    box-sizing: border-box;
}

/* ── CSS Reset ──
   Strips default margins, padding, borders, and backgrounds
   from all standard HTML elements so every page starts clean.
*/

html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, 
pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, 
strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, 
legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, 
details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-size: 100%;
    vertical-align: baseline;
    background: transparent;
}

/* Ensure semantic layout elements render as blocks */

article, aside, details, figcaption, figure,
footer, header, main, hgroup, menu, nav, section {
    display: block;
}

/* Remove list bullets/numbers */

ol, ul {
    list-style: none;
}

/* Collapse table borders */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* Remove quotation marks from blockquote/q */

blockquote, q {
    quotes: none;
}

blockquote::before, blockquote::after,
q::before, q::after {
    content: "";
    content: none;
}

/* Strip default link styling */

a {
    margin: 0;
    padding: 0;
    font-size: 100%;
    vertical-align: baseline;
    background: transparent;
    outline: none;
    color: inherit;
    text-decoration: none;
}

del {
    text-decoration: line-through;
}

abbr[title], dfn[title] {
    border-bottom: 1px dotted;
    cursor: help;
}

hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #cccccc;
    margin: 1em 0;
    padding: 0;
}

/* Align inline form elements vertically */

input, select {
    vertical-align: middle;
}

/* ── Clearfix ── */

.clearfix::before,
.clearfix::after {
    content: "";
    display: table;
}

.clearfix::after {
    clear: both;
}

/* ── Typography ──
   Base font, size, line-height, and responsive scaling.
   Font size uses viewport units and clamps to fixed px values
   at breakpoints to maintain readability across all screen sizes.
*/

html {
    font-family: "Noto Sans JP", sans-serif;
    font-size: 1.28vw;
    line-height: 1.8;
    color: var(--text-dark);
    font-weight: 300;
    height: 100%;
    width: 100%;
}

html.fixed {
    position: fixed;
}

/* Large desktop — cap font size */

@media (min-width: 1500px) {
    html {
        font-size: 18px;
    }
}

/* 13-inch / medium-large desktop */

@media (max-width: 1280px) {
    html {
        font-size: 1.4vw;
    }
}

/* Tablet / iPad */

@media (max-width: 1024px) {
    html {
        font-size: 1.6vw;
    }
}

/* Mobile portrait */

@media (max-width: 767px) {
    html {
        font-size: 3.8vw;
        color: var(--text-dark);
    }
    body {
        color: var(--text-dark);
    }
}

/* Mobile landscape */

@media (orientation: landscape) and (max-width: 767px) {
    html {
        font-size: 2.4vw;
    }
}

/* English font utility class */

.font_en {
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 400;
    font-style: normal;
}

/* ── Body ── */

body {
    height: 100%;
    width: 100%;
    background: #000;
    color: var(--text-dark);
    overflow-x: hidden;
    cursor: url('/assets/general/Cursor-Airplane.png') 9 9, auto;
}

/* Lock scroll position when nav menu is open */

body.fixed {
    position: fixed;
}

/* Apply the airplane cursor to all interactive elements */

a,
button,
[role="button"],
select,
label,
input[type="submit"],
input[type="button"],
input[type="reset"] {
    cursor: url('/assets/general/Cursor-Airplane.png') 9 9, pointer;
}

/* ── Layout helpers ── */

/* Stacks page sections above the background */

article {
    position: relative;
    z-index: 10;
}

/* Full-width overflow wrapper — used on most page sections */

.wrapper {
    position: relative;
    width: 100%;
    overflow: hidden;
}

section {
    position: relative;
}

/* ── Form element resets ──
   Strips browser-default styling from inputs, textareas,
   selects, and buttons so each page can style them freely.
*/

textarea {
    width: 100%;
    max-width: 100%;
    -webkit-appearance: none;
    appearance: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
}

textarea:focus {
    outline: 0;
}

input {
    border: none;
    background: none;
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    box-shadow: none;
}

/* Prevent browser autofill from overriding custom input backgrounds */

input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px #fff inset;
}

input:focus {
    outline: 0;
}

select {
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
    border: none;
    background: none;
}

select:focus {
    outline: 0;
}

/* Remove the IE dropdown arrow */

select::-ms-expand {
    display: none;
}

button {
    border: none;
    background: none;
    cursor: pointer;
}

button:focus {
    outline: 0;
}

/* ── Images ── */

img {
    width: 100%;
}

/* ── Responsive visibility helpers ──
   .cont_pc  — visible on desktop, hidden on mobile
   .cont_sp  — hidden on desktop, visible on mobile
   .mobile-break — <br> that only renders on mobile
*/

.cont_sp {
    display: none !important;
}

.mobile-break {
    display: none;
}

@media (max-width: 767px) {
    .cont_pc {
        display: none !important;
    }

    .cont_sp {
        display: block !important;
    }

    .mobile-break {
        display: inline;
    }
}

/* ── Page overlay ──
   Full-screen black overlay used during page transitions.
   Sits above everything with an extremely high z-index.
*/

.over_bk {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #000;
    z-index: 10000000000;
}

