.elementor-kit-5{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-color-kojiblk:#070707;--e-global-color-kojidbk:#000000;--e-global-color-kojiwht:#F3F1EB;--e-global-color-kojigry:#A8A8A3;--e-global-color-kojilin:rgba(255,255,255,0.16);--e-global-color-kojiylw:#FFD400;--e-global-color-kojiglw:rgba(255,212,0,0.35);--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;--e-global-typography-kdisp01-font-family:"Inter Tight";--e-global-typography-kdisp01-font-size:clamp(48px, 8vw, 160px);--e-global-typography-kdisp01-font-weight:900;--e-global-typography-kdisp01-text-transform:uppercase;--e-global-typography-kdisp01-line-height:0.88em;--e-global-typography-kdisp01-letter-spacing:-0.03em;--e-global-typography-khead01-font-family:"Inter Tight";--e-global-typography-khead01-font-size:clamp(28px, 4vw, 64px);--e-global-typography-khead01-font-weight:700;--e-global-typography-khead01-text-transform:uppercase;--e-global-typography-khead01-line-height:1.05em;--e-global-typography-khead01-letter-spacing:-0.02em;--e-global-typography-klabel1-font-family:"Inter Tight";--e-global-typography-klabel1-font-size:12px;--e-global-typography-klabel1-font-weight:600;--e-global-typography-klabel1-text-transform:uppercase;--e-global-typography-klabel1-line-height:1.4em;--e-global-typography-klabel1-letter-spacing:0.24em;--e-global-typography-kbody01-font-family:"Noto Sans JP";--e-global-typography-kbody01-font-size:16px;--e-global-typography-kbody01-font-weight:400;--e-global-typography-kbody01-text-transform:none;--e-global-typography-kbody01-line-height:1.9em;--e-global-typography-kbody01-letter-spacing:0.02em;--e-global-typography-knav001-font-family:"Inter Tight";--e-global-typography-knav001-font-size:clamp(42px, 6.4vw, 110px);--e-global-typography-knav001-font-weight:800;--e-global-typography-knav001-text-transform:uppercase;--e-global-typography-knav001-line-height:1.02em;--e-global-typography-knav001-letter-spacing:-0.02em;--e-global-typography-kscore1-font-family:"Inter Tight";--e-global-typography-kscore1-font-size:clamp(72px, 11vw, 156px);--e-global-typography-kscore1-font-weight:900;--e-global-typography-kscore1-text-transform:none;--e-global-typography-kscore1-line-height:0.9em;--e-global-typography-kscore1-letter-spacing:-0.04em;--e-global-typography-kmeta01-font-family:"Inter Tight";--e-global-typography-kmeta01-font-size:12px;--e-global-typography-kmeta01-font-weight:500;--e-global-typography-kmeta01-text-transform:uppercase;--e-global-typography-kmeta01-line-height:1.5em;--e-global-typography-kmeta01-letter-spacing:0.16em;}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1200px;}.e-con{--container-max-width:1200px;}.elementor-widget:not(:last-child){margin-block-end:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-kit-5 input:not([type="button"]):not([type="submit"]),.elementor-kit-5 textarea,.elementor-kit-5 .elementor-field-textual{padding:14px 14px 14px 14px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-5 input:not([type="button"]):not([type="submit"]),.elementor-kit-5 textarea,.elementor-kit-5 .elementor-field-textual{padding:16px 16px 16px 16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ===================================================================
   KOJI TORIUMI OFFICIAL WEBSITE — Phase 1 base stylesheet
   Scope: :root variables (inert) + .koji-* classes only.
   No existing page is affected. Move to koji-toriumi-site-core
   plugin (assets/css/koji-site.css) in a later phase.
   =================================================================== */
:root{
  --koji-black:#070707;
  --koji-deep-black:#000000;
  --koji-white:#F3F1EB;
  --koji-gray:#A8A8A3;
  --koji-line:rgba(255,255,255,0.16);
  --koji-yellow:#FFD400;
  --koji-yellow-glow:rgba(255,212,0,0.35);
  --koji-content-width:1600px;
  --koji-gutter:80px;
  --koji-header-h:88px;
}
@media (max-width:1599px){:root{--koji-gutter:64px}}
@media (max-width:1199px){:root{--koji-gutter:40px}}
@media (max-width:767px){:root{--koji-gutter:20px;--koji-header-h:72px}}
@media (max-width:374px){:root{--koji-gutter:16px}}

/* ---------- root ---------- */
.koji-site{background-color:var(--koji-black);color:var(--koji-white);overflow-x:clip;}
.koji-site img{max-width:100%;height:auto}
.koji-site ::selection{background:var(--koji-yellow);color:var(--koji-deep-black)}
.koji-site :focus-visible,.koji-header :focus-visible,.koji-global-menu :focus-visible{outline:2px solid var(--koji-yellow);outline-offset:3px}

/* ---------- section / inner ---------- */
.koji-section{position:relative;width:100%;padding-left:var(--koji-gutter);padding-right:var(--koji-gutter);}
.koji-inner{width:100%;max-width:var(--koji-content-width);margin-left:auto;margin-right:auto;}

/* ---------- type helpers ---------- */
.koji-section-label{color:var(--koji-yellow)}
.koji-display-title{color:var(--koji-white)}
.koji-body-copy{color:var(--koji-gray)}
.koji-body-copy a{color:var(--koji-yellow)}
.koji-yellow-line .elementor-divider-separator{border-top-color:var(--koji-yellow)!important}
.koji-yellow-line .elementor-divider{padding-block:0}
/* motion hook only — visible by default so Phase 1 needs no JS */
.koji-reveal{opacity:1;transform:none}

/* ---------- placeholders ---------- */
.koji-ph{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;
  background-color:#141414;background-size:cover;background-position:center;background-repeat:no-repeat;
  background-image:repeating-linear-gradient(135deg,rgba(0,0,0,0) 0 26px,rgba(255,212,0,.10) 26px 27px);
  border:1px solid rgba(255,212,0,.34);overflow:hidden}
.koji-ph__label,.koji-ph .elementor-widget-heading .elementor-heading-title{position:relative;z-index:2}
.koji-ph-label .elementor-heading-title{font-family:'Inter Tight',sans-serif;font-weight:600;font-size:12px;
  letter-spacing:.24em;text-transform:uppercase;color:var(--koji-white)}
.koji-ph-meta .elementor-heading-title{font-family:'Inter Tight',sans-serif;font-weight:500;font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--koji-gray)}
/* add koji-ph--filled once a real image is set */
.koji-ph--filled{border-color:transparent;background-image:none}
.koji-ph--filled .koji-ph-label,.koji-ph--filled .koji-ph-meta{display:none}
.koji-ph--16x10{aspect-ratio:16/10}
.koji-ph--9x16{aspect-ratio:9/16}
.koji-ph--4x5{aspect-ratio:4/5}
.koji-ph--3x4{aspect-ratio:3/4}
.koji-ph--3x2{aspect-ratio:3/2}

/* admin-only design notes (never contain match data) */
.koji-admin-only{border:1px dashed rgba(255,212,0,.4);}
body:not(.logged-in) .koji-admin-only{display:none!important}

/* ---------- header ---------- */
.koji-header{position:fixed;top:0;left:0;right:0;z-index:1000;background-color:transparent;
  transition:background-color .32s ease,backdrop-filter .32s ease}
.koji-header.is-scrolled{background-color:rgba(7,7,7,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.koji-header-inner{min-height:var(--koji-header-h)}
.koji-header-logo .elementor-heading-title,.koji-header-logo a{color:var(--koji-white);text-decoration:none;
  font-family:'Inter Tight',sans-serif;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.koji-header-actions .elementor-icon{color:var(--koji-white)}
.koji-header-actions .elementor-icon:hover{color:var(--koji-yellow)}
.koji-hamburger .elementor-button{background:transparent;border:0;padding:0;color:var(--koji-white)}
.koji-hamburger .elementor-button:hover{color:var(--koji-yellow)}
.koji-hamburger .elementor-button-icon svg,.koji-hamburger .elementor-button-icon i{font-size:32px}
@media (max-width:767px){.koji-hamburger .elementor-button-icon svg,.koji-hamburger .elementor-button-icon i{font-size:30px}}

/* ---------- global menu popup ---------- */
.koji-global-menu{background-color:var(--koji-black)}
.koji-menu-24 .elementor-heading-title{font-family:'Inter Tight',sans-serif;font-weight:900;
  font-size:min(62vh,52vw);line-height:.82;color:transparent;-webkit-text-stroke:2px var(--koji-white);
  opacity:.05;user-select:none}
.koji-menu-24{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:0}
.koji-global-menu .koji-nav{position:relative;z-index:2}
.koji-global-menu .koji-nav .elementor-nav-menu{counter-reset:kojinav}
.koji-global-menu .koji-nav .elementor-nav-menu>li{counter-increment:kojinav}
.koji-global-menu .koji-nav .elementor-nav-menu>li>a{position:relative;display:inline-flex;align-items:baseline;gap:.5em;
  color:var(--koji-white);padding:.06em 0}
.koji-global-menu .koji-nav .elementor-nav-menu>li>a::before{content:counter(kojinav,decimal-leading-zero);
  font-size:.2em;font-weight:600;letter-spacing:.2em;color:var(--koji-yellow);opacity:.75}
.koji-global-menu .koji-nav .elementor-nav-menu>li>a::after{content:"";position:absolute;left:0;right:0;bottom:.1em;
  height:2px;background:var(--koji-yellow);box-shadow:0 0 14px var(--koji-yellow-glow);
  transform:scaleX(0);transform-origin:left center;transition:transform .3s cubic-bezier(.22,.61,.36,1)}
.koji-global-menu .koji-nav .elementor-nav-menu>li>a:hover::after,
.koji-global-menu .koji-nav .elementor-nav-menu>li>a:focus-visible::after{transform:scaleX(1)}

/* ---------- hero ---------- */
.koji-hero{position:relative;width:100%;min-height:100svh;overflow:hidden;background-color:var(--koji-deep-black)}
.koji-hero-slides{position:relative;width:100%;min-height:100svh}
.koji-hero-slide{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .9s ease}
.koji-hero-slide.is-active,.koji-hero-slide:first-child{opacity:1;pointer-events:auto}
.koji-hero-image{position:absolute;inset:0;width:100%;height:100%;flex-direction:column;gap:6px}
.koji-hero-image--desktop{display:flex}
.koji-hero-image--mobile{display:none}
@media (max-width:767px){
  .koji-hero-image--desktop{display:none}
  .koji-hero-image--mobile{display:flex}
}
.koji-hero-copy{position:relative;z-index:3}
.koji-hero-fixed{position:absolute;left:var(--koji-gutter);right:var(--koji-gutter);bottom:clamp(24px,4vw,56px);z-index:4;pointer-events:none}
.koji-hero-fixed a,.koji-hero-fixed button{pointer-events:auto}
.koji-hero-progress{position:absolute;left:var(--koji-gutter);right:var(--koji-gutter);bottom:0;z-index:5;
  display:flex;gap:6px}
.koji-hero-progress .koji-hero-progress-bar{flex:1 1 0;height:2px;background:var(--koji-line);position:relative}
.koji-hero-progress .koji-hero-progress-bar>span{position:absolute;inset:0 auto 0 0;width:0;background:var(--koji-yellow)}
.koji-hero-progress .koji-hero-progress-bar:first-child>span{width:100%}
/* keep the editor usable: stack slides instead of overlapping them */
body.elementor-editor-active .koji-hero-slides{min-height:0}
body.elementor-editor-active .koji-hero-slide{position:relative;opacity:1;pointer-events:auto;margin-bottom:24px;min-height:60vh}
body.elementor-editor-active .koji-hero-image{position:relative;min-height:60vh}
body.elementor-editor-active .koji-hero-image--mobile{display:flex}

/* ---------- profile / story ---------- */
.koji-profile-photo{width:100%}
@media (max-width:767px){
  .koji-profile-panel{margin-top:-64px;position:relative;z-index:2;background-color:var(--koji-black)}
}
.koji-story-item{border-top:1px solid var(--koji-line)}

/* ---------- match center / calendar ---------- */
.koji-match-score{font-family:'Inter Tight',sans-serif;font-weight:900;letter-spacing:-.04em;color:var(--koji-white)}
.koji-empty-state{border:1px solid var(--koji-line);text-align:center}
.koji-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background-color:var(--koji-line);
  border:1px solid var(--koji-line)}
.koji-calendar-cell{background-color:var(--koji-black);min-height:96px;padding:10px;font-family:'Inter Tight',sans-serif;
  font-size:12px;letter-spacing:.08em;color:var(--koji-gray)}
.koji-calendar-head{background-color:var(--koji-black);padding:10px;text-align:center;font-family:'Inter Tight',sans-serif;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--koji-yellow)}
@media (max-width:767px){.koji-calendar-cell{min-height:52px;padding:6px;font-size:11px}.koji-calendar-head{padding:6px;font-size:9px;letter-spacing:.1em}}

/* ---------- news ---------- */
.koji-news-archive{background-color:var(--koji-black)}
.koji-news-hero{position:relative;overflow:hidden;min-height:68svh}
@media (max-width:767px){.koji-news-hero{min-height:54svh}}
.koji-ball-trace{position:absolute;inset:0;z-index:1;pointer-events:none}
.koji-ball-trace svg{width:100%;height:100%;display:block}
.koji-ball-trace .koji-trace-path{fill:none;stroke:var(--koji-yellow);stroke-width:1.5;opacity:.7}
.koji-ball-trace .koji-trace-ball{fill:var(--koji-white)}
.koji-ball-trace .koji-trace-impact{fill:none;stroke:var(--koji-yellow);stroke-width:1;opacity:.45}
.koji-news-grid .koji-news-card{position:relative}
.koji-news-card .koji-card-line{display:block;height:1px;width:100%;background:var(--koji-line);position:relative}
.koji-news-card .koji-card-line::after{content:"";position:absolute;left:0;top:-1px;height:3px;width:3px;border-radius:50%;background:var(--koji-white)}
.koji-news-featured{border-top:1px solid var(--koji-line);border-bottom:1px solid var(--koji-line)}

/* ---------- single post ---------- */
.koji-single-post{background-color:var(--koji-black)}
.koji-single-post .koji-article-body{max-width:820px;margin-left:auto;margin-right:auto}
.koji-single-post .koji-article-body a{color:var(--koji-yellow)}
.koji-single-post .koji-article-body blockquote{border-left:2px solid var(--koji-yellow);padding-left:24px;margin-left:0}

/* ---------- footer ---------- */
.koji-footer{position:relative;background-color:var(--koji-black);overflow:hidden}
.koji-footer-24 .elementor-heading-title{font-family:'Inter Tight',sans-serif;font-weight:900;font-size:min(30vw,340px);
  line-height:.8;color:var(--koji-white);opacity:.035;user-select:none}
.koji-footer-24{position:absolute;right:0;bottom:-.12em;pointer-events:none;z-index:0}
.koji-footer-fade .elementor-divider-separator{border-top-color:var(--koji-yellow)!important;
  -webkit-mask-image:linear-gradient(90deg,var(--koji-yellow) 0%,rgba(0,0,0,0) 100%);
  mask-image:linear-gradient(90deg,#000 0%,rgba(0,0,0,0) 100%)}

/* ---------- reduce motion ---------- */
@media (prefers-reduced-motion:reduce){
  .koji-site *,.koji-header *,.koji-global-menu *,.koji-footer *{
    animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
/* ===================================================================
   KOJI — Phase 1 patch layer (specificity + component detail)
   =================================================================== */

/* structural overrides that must beat Elementor container defaults */
.elementor .koji-header{position:fixed;top:0;left:0;right:0;width:100%;z-index:1000}
.elementor .koji-hero-slides>.koji-hero-slide{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%}
.elementor .koji-hero-slide>.koji-hero-image{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%}
.elementor .koji-hero-fixed{position:absolute}
.elementor .koji-hero-progress{position:absolute;display:block}
.elementor .koji-menu-24{position:absolute}
.elementor .koji-footer-24{position:absolute}
.elementor .koji-ball-trace{position:absolute;top:0;left:0;width:100%;height:100%}
.elementor .koji-hero-image--desktop{display:flex}
.elementor .koji-hero-image--mobile{display:none}
.elementor .koji-profile-photo--desktop{display:flex}
.elementor .koji-profile-photo--mobile{display:none}
@media (max-width:767px){
  .elementor .koji-hero-image--desktop{display:none}
  .elementor .koji-hero-image--mobile{display:flex}
  .elementor .koji-profile-photo--desktop{display:none}
  .elementor .koji-profile-photo--mobile{display:flex}
}

/* anchor offset under the fixed header */
.koji-site [id]{scroll-margin-top:calc(var(--koji-header-h) + 24px)}

/* header details */
.koji-hamburger .elementor-button{padding:4px;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;border:0}
.koji-hamburger .elementor-button-text{display:none}
.koji-header-instagram .elementor-icon:hover{color:var(--koji-yellow)}

/* hero */
.koji-hero .koji-display-title .elementor-heading-title{font-size:clamp(40px,7vw,140px);line-height:.9}
.koji-hero-progress .koji-hero-progress-inner{display:flex;gap:6px;width:100%}
.koji-hero-progress .koji-hero-progress-bar{flex:1 1 0;height:2px;background:var(--koji-line);position:relative;display:block}
.koji-hero-progress .koji-hero-progress-bar>span{position:absolute;top:0;left:0;bottom:0;width:0;background:var(--koji-yellow);display:block}
.koji-hero-progress .koji-hero-progress-bar:first-child>span{width:100%}
.koji-hero-24mask-wrap{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}
.koji-hero-24mask{position:absolute;top:0;left:0;width:100%;height:100%}
.koji-hero-24mask svg{width:100%;height:100%;display:block}

/* global menu typography */
.koji-global-menu .koji-nav .elementor-nav-menu>li>a{font-family:'Inter Tight',sans-serif;font-weight:800;
  text-transform:uppercase;letter-spacing:-.02em;line-height:1.05;font-size:clamp(42px,6.4vw,110px);padding:0}
.koji-global-menu .koji-nav .elementor-nav-menu>li>a:hover,
.koji-global-menu .koji-nav .elementor-nav-menu>li>a:focus{color:var(--koji-white);background:transparent}
.koji-global-menu .koji-nav .elementor-nav-menu>li{margin-bottom:.04em}

/* profile */
.koji-profile-value .elementor-heading-title{font-family:'Inter Tight',sans-serif}
.koji-profile-row{border-top:1px solid var(--koji-line)}
.koji-profile-row:last-child{border-bottom:1px solid var(--koji-line)}
.koji-profile-intro p{color:var(--koji-gray)}

/* story */
.koji-story-item{border-top:1px solid var(--koji-line)}

/* news cards */
.koji-news-card{text-decoration:none;color:inherit}
.koji-news-card img{transition:transform .45s ease;width:100%;height:100%;object-fit:cover;display:block}
.koji-news-card-media,.koji-news-featured-media{border:0}
.koji-news-card-media .elementor-widget-theme-post-featured-image,
.koji-news-featured-media .elementor-widget-theme-post-featured-image{width:100%;height:100%}
.koji-news-card-media figure,.koji-news-featured-media figure,
.koji-news-card-media .elementor-widget-container,.koji-news-featured-media .elementor-widget-container{width:100%;height:100%;margin:0}
img[src*="elementor/assets/images/placeholder.png"]{opacity:0}
.koji-news-card-media:has(img[src*="placeholder.png"]),
.koji-news-featured-media:has(img[src*="placeholder.png"]){border:1px solid rgba(255,212,0,.34)}
.koji-news-card-media::after,.koji-news-featured-media::after{content:"24";position:absolute;top:0;left:0;right:0;bottom:0;
  display:none;align-items:center;justify-content:center;font-family:'Inter Tight',sans-serif;font-weight:900;
  font-size:clamp(64px,12vw,140px);line-height:1;color:var(--koji-white);opacity:.06;pointer-events:none}
.koji-news-card-media:has(img[src*="placeholder.png"])::after,
.koji-news-featured-media:has(img[src*="placeholder.png"])::after{display:flex}
.koji-news-card-title .elementor-heading-title{color:var(--koji-white);font-family:'Inter Tight',sans-serif;
  font-weight:700;font-size:20px;line-height:1.35;transition:color .3s ease}
.koji-news-featured-title .elementor-heading-title{color:var(--koji-white);transition:color .3s ease}
.koji-news-card-meta,.koji-news-card-meta *{font-family:'Inter Tight',sans-serif;font-size:11px;
  letter-spacing:.18em;text-transform:uppercase;color:var(--koji-gray)}
.koji-news-card-excerpt,.koji-news-card-excerpt p{color:var(--koji-gray);font-size:14px;line-height:1.8}

/* news card ball motion */
.koji-card-line{position:relative}
.koji-card-line .elementor-divider{padding:0}
.koji-card-line::before{content:"";position:absolute;left:0;top:50%;height:1px;width:0;margin-top:-.5px;
  background:var(--koji-yellow);box-shadow:0 0 10px var(--koji-yellow-glow);
  transition:width .38s cubic-bezier(.22,.61,.36,1)}
.koji-card-line::after{content:"";position:absolute;left:0;top:50%;width:4px;height:4px;margin-top:-2px;
  border-radius:50%;background:var(--koji-white);
  transition:left .38s cubic-bezier(.22,.61,.36,1),transform .38s ease}
@media (hover:hover){
  .koji-news-card:hover .koji-card-line::before{width:100%}
  .koji-news-card:hover .koji-card-line::after{left:100%;transform:translateX(-4px)}
  .koji-news-card:hover img{transform:scale(1.03)}
  .koji-news-card:hover .koji-news-card-title .elementor-heading-title,
  .koji-news-card:hover .koji-news-featured-title .elementor-heading-title{color:var(--koji-yellow)}
}

/* news hero */
.koji-news-hero-title .elementor-heading-title{font-size:clamp(68px,17vw,240px);line-height:.86;margin-left:-.04em}
.koji-news-hero-label,.koji-news-hero-title,.koji-news-hero-copy,.koji-news-hero-scroll{position:relative;z-index:2}
.koji-ball-trace .elementor-widget-container,.koji-ball-trace-inner{position:absolute;top:0;left:0;width:100%;height:100%}
.koji-ball-trace-inner svg{width:100%;height:100%;display:block}

/* filter + pagination + empty state */
.koji-news-filter{width:100%}
.koji-news-filter .e-filter-item{background:transparent;border:0;border-bottom:1px solid transparent;border-radius:0;
  padding:6px 0;margin-right:28px;color:var(--koji-gray);font-family:'Inter Tight',sans-serif;font-size:12px;
  letter-spacing:.2em;text-transform:uppercase}
.koji-news-filter .e-filter-item[aria-pressed="true"],.koji-news-filter .e-filter-item.e-filter-item-active{
  color:var(--koji-white);border-bottom-color:var(--koji-yellow);background:transparent}
@media (max-width:767px){
  .koji-news-filter{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .koji-news-filter .e-filter{flex-wrap:nowrap}
}
.koji-news-grid .elementor-pagination{margin-top:56px;font-family:'Inter Tight',sans-serif;font-size:12px;letter-spacing:.18em}
.koji-news-grid .elementor-pagination .page-numbers{color:var(--koji-gray);padding:0 10px;text-decoration:none}
.koji-news-grid .elementor-pagination .page-numbers.current{color:var(--koji-yellow)}
.koji-news-grid .elementor-widget-loop-grid__no-posts-message,
.koji-news-grid .e-loop-nothing-found-message{color:var(--koji-white);font-family:'Inter Tight',sans-serif;
  font-weight:800;letter-spacing:.06em;text-transform:uppercase;font-size:clamp(18px,3vw,32px);
  border:1px solid var(--koji-line);padding:clamp(32px,5vw,72px)}

/* single post */
.koji-article-title .elementor-heading-title{color:var(--koji-white)}
.koji-post-content,.koji-post-content p,.koji-post-content li{color:var(--koji-gray);line-height:1.95}
.koji-post-content h2,.koji-post-content h3,.koji-post-content h4{color:var(--koji-white)}
.koji-article-image img{width:100%;height:auto;display:block}
.koji-article-nav .elementor-post-navigation,
.koji-article-nav .elementor-post-navigation__separator{border-color:var(--koji-line);background-color:var(--koji-line)}
.koji-article-nav a,.koji-article-nav span{color:var(--koji-white);font-family:'Inter Tight',sans-serif;
  letter-spacing:.12em;text-transform:uppercase;font-size:12px}
.koji-article-meta,.koji-article-meta *{font-family:'Inter Tight',sans-serif;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--koji-gray)}
.koji-article-meta a{color:var(--koji-yellow)}

/* footer */
.koji-footer-menu .elementor-nav-menu>li>a{color:var(--koji-white);font-family:'Inter Tight',sans-serif;font-size:12px;
  letter-spacing:.2em;text-transform:uppercase;padding:4px 0}
.koji-footer-menu .elementor-nav-menu>li>a:hover{color:var(--koji-yellow);background:transparent}

/* empty states / admin notes */
.koji-empty-state{border:1px solid var(--koji-line)}
.koji-admin-only .elementor-heading-title{color:var(--koji-yellow);line-height:1.6}

/* editor safety — must stay last */
body.elementor-editor-active .elementor .koji-header{position:relative}
body.elementor-editor-active .elementor .koji-hero-slides>.koji-hero-slide{position:relative;opacity:1;
  pointer-events:auto;margin-bottom:24px;min-height:60vh;height:auto}
body.elementor-editor-active .elementor .koji-hero-slide>.koji-hero-image{position:relative;min-height:46vh;height:auto}
body.elementor-editor-active .elementor .koji-hero-image--desktop,
body.elementor-editor-active .elementor .koji-hero-image--mobile,
body.elementor-editor-active .elementor .koji-profile-photo--desktop,
body.elementor-editor-active .elementor .koji-profile-photo--mobile{display:flex}
/* Phase 1 fix: absolutely-positioned hero overlays must not inherit width:100% */
.elementor .koji-hero-fixed,.elementor .koji-hero-progress{width:auto}
.elementor .koji-hero-fixed{max-width:none}

/* Phase 1 fix: menu numbering 01-06 (--main/--dropdown live on the <nav>, not the <ul>) */
.koji-global-menu .koji-nav .elementor-nav-menu--dropdown,
.koji-global-menu .koji-nav .elementor-menu-toggle,
.koji-footer-menu .elementor-nav-menu--dropdown,
.koji-footer-menu .elementor-menu-toggle{display:none!important}
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul{counter-reset:kojinav}
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li{counter-increment:kojinav;position:relative}
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a{display:block;position:relative;
  padding:0 0 0 46px;overflow:visible;gap:0}
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a::before{content:counter(kojinav,decimal-leading-zero);
  position:absolute;left:0;top:14px;font-size:12px;font-weight:600;letter-spacing:.18em;
  color:var(--koji-yellow);opacity:.85!important;line-height:1;content:counter(kojinav,decimal-leading-zero)!important}
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a::after{left:46px;right:0}
@media (max-width:767px){
  .koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a{padding-left:32px}
  .koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a::before{font-size:10px;top:10px}
  .koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a::after{left:32px}
}
/* Phase 1 fix: Elementor pointer CSS zeroes nav item pseudo opacity */
.koji-global-menu .koji-nav .elementor-nav-menu--main>ul>li>a::after{opacity:1!important;content:""!important}


/* ===================================================================
   TOP NEWS 1カラム Editorial List（Phase B-2）
   スコープは .koji-news-teaser（TOP の NEWS セクション）に限定。
   /news/ や Single Post には到達しない。
   Phase C で Archive へ展開する際はこのセレクタを拡張すること。
   =================================================================== */
.koji-news-teaser .koji-news-row{
  display:grid;
  grid-template-columns:120px 110px minmax(0,1fr) 32px;
  grid-template-areas:"date cat title arrow";
  align-items:center;
  column-gap:24px;
  padding:22px 0;
  border-bottom:1px solid var(--koji-line);
  text-decoration:none;
  color:inherit;
  transition:border-color .28s ease;
}
.koji-news-teaser .e-loop-item:first-of-type .koji-news-row{
  border-top:1px solid var(--koji-line);
}
.koji-news-teaser .koji-news-row-date{grid-area:date}
.koji-news-teaser .koji-news-row-cat{grid-area:cat}
.koji-news-teaser .koji-news-row-title{grid-area:title}

.koji-news-teaser .koji-news-row-date .elementor-shortcode{
  font-family:'Inter Tight',sans-serif;font-size:12px;font-weight:500;
  letter-spacing:.16em;color:var(--koji-gray);white-space:nowrap;
}
.koji-news-teaser .koji-news-row-cat .elementor-shortcode{
  font-family:'Inter Tight',sans-serif;font-size:12px;font-weight:600;
  letter-spacing:.16em;color:var(--koji-yellow);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
.koji-news-teaser .koji-news-row-title .elementor-heading-title{
  font-family:'Inter Tight',sans-serif;
  font-size:clamp(16px,1.35vw,20px);font-weight:700;line-height:1.45;
  color:var(--koji-white);transition:color .28s ease;
}
.koji-news-teaser .koji-news-row::after{
  grid-area:arrow;content:"→";justify-self:end;
  font-family:'Inter Tight',sans-serif;font-size:18px;line-height:1;
  color:var(--koji-gray);
  transition:color .28s ease,transform .28s ease;
}
@media (hover:hover){
  .koji-news-teaser .koji-news-row:hover .koji-news-row-title .elementor-heading-title{color:var(--koji-yellow)}
  .koji-news-teaser .koji-news-row:hover::after{color:var(--koji-yellow);transform:translateX(6px)}
  .koji-news-teaser .koji-news-row:hover{border-bottom-color:rgba(255,212,0,.45)}
}
.koji-news-teaser .koji-news-row:focus-visible{
  outline:2px solid var(--koji-yellow);outline-offset:4px;
}
/* タブレット */
@media (max-width:1199px){
  .koji-news-teaser .koji-news-row{
    grid-template-columns:104px 96px minmax(0,1fr) 28px;column-gap:16px;
  }
}
/* モバイル：2 段構成 */
@media (max-width:767px){
  .koji-news-teaser .koji-news-row{
    grid-template-columns:auto 1fr auto;
    grid-template-areas:
      "date  cat   cat"
      "title title arrow";
    align-items:start;
    column-gap:12px;row-gap:8px;padding:20px 0;
  }
  .koji-news-teaser .koji-news-row-date .elementor-shortcode,
  .koji-news-teaser .koji-news-row-cat .elementor-shortcode{font-size:11px;letter-spacing:.14em}
  .koji-news-teaser .koji-news-row-title .elementor-heading-title{font-size:17px;line-height:1.45}
  .koji-news-teaser .koji-news-row::after{align-self:center;font-size:16px}
}

/* ===================================================================
   NEWS Archive の余剰な白線を消す（2026-08-11）

   原因:
     Astra テーマの main.min.css に
       .ast-separate-container .ast-article-post{
         border-bottom:1px solid var(--ast-border-color); … }
     というブログ一覧用のルールがある。
     Archive では Astra が各ループ項目（.e-loop-item）に
     ast-article-post クラスを付与するため、
     記事と記事の間に #ddd の水平線が入っていた。

   TOP に出ない理由:
     TOP の body には ast-separate-container が付かず、
     ループ項目のクラスも ast-article-single なので上記ルールが一致しない。

   対応:
     Archive にしか存在しない ast-article-post でスコープし、
     この border-bottom だけを打ち消す。
     行自体の薄いグレーの区切り線（.koji-news-row の border）はそのまま。

   ※ hr / .elementor-divider / article / .elementor-loop-container への
      グローバル一括上書きは行っていない。
   =================================================================== */
.koji-news-teaser .elementor-loop-container > .ast-article-post{
  border-bottom: 0;
}

/* ===================================================================
   Phase D-1 : Single Post の目次（TOC）モバイル左余白

   原因（実測 2026-08-11 / 375px・匿名）:
     Elementor Pro の TOC は
       .elementor-toc__list-wrapper{list-style:none;padding:0}
     で padding しかリセットしておらず、margin を戻していない。
     そこへ Astra の main.min.css の
       ol,ul{margin:0 0 1.5em 3em}
     が素通しで当たり、目次の <ol> に margin-left:3em が付いていた。
     <ol> のフォントサイズは 15px なので 3em = 45px。
     結果、375px では
       TOC ボックス左端 40.09px
       ＋ border 1px ＋ box-padding 20px ＝ 61.09px
       ＋ Astra 由来の 45px ＝ 番号の左端が 105.09px
       ＋ マーカー 10.84px ＋ 8px ＝ 見出し文字の開始が 123.94px
     となり、目次の左側だけに約 45px の不自然な空白が生まれていた。
     （デスクトップでは <ol> が 16px のため 3em = 48px。同じ原因）

   対応:
     TOC 本体直下の <ol>（トップレベルのみ）で margin を 0 に戻す。
     子階層の <ol>/<ul> は .elementor-toc__list-item .elementor-toc__list-wrapper の
     margin-inline-start:var(--nested-list-indent,1em) が引き続き効くよう、
     セレクタを直下（>）に限定して触っていない。
     詳細度は (0,3,0) で Astra の ol,ul (0,0,1) に勝つため !important は不要。
     記事本文の ol / ul にも一切到達しない。

   align-items:
     マーカーが行の垂直中央に置かれていたため、2 行以上に折り返す項目で
     番号が 1 行目と揃わなかった。番号を本文の左端に寄せた結果これが目立つので
     先頭行に揃える。この 1 行だけ独立して戻せる。
   =================================================================== */
.elementor-widget-table-of-contents .elementor-toc__body > .elementor-toc__list-wrapper{
  margin:0;
}
.elementor-widget-table-of-contents .elementor-toc__list-item-text-wrapper{
  align-items:flex-start;
}


/* ===================================================================
   Phase D-2 : Single Post 記事末尾の PREVIOUS / NEXT ARTICLE

   出力元: novamira-sandbox/koji-article-nav.php の [koji_article_nav]
   配置先: Elementor Single テンプレート 2085 のルート直下（記事カードの外・後ろ）

   スコープ:
     .koji-postnav 配下のみ。このクラスは記事ナビゲーション以外に存在しない。
     TOP NEWS（.koji-news-teaser）／NEWS Archive／Header／Footer には到達しない。
     配色は既存の --koji-* トークンのみ。新しい色は作っていない。

   デザイン意図:
     記事本文（ライトテーマ）を読み終えたあと、細い黄色のラインを境に
     サイト本体の黒い世界へ戻っていくトランジションとして置く。
     ページ背景（#0F0F0F）をそのまま活かし、黒い箱を重ねない。
   =================================================================== */
.koji-postnav{
  margin-top:72px;
  padding-top:40px;
  border-top:1px solid var(--koji-yellow);
}
.koji-postnav-inner{
  display:grid;
  grid-template-columns:1fr 1fr;
  column-gap:48px;
}
.koji-postnav-item{
  display:flex;
  flex-direction:column;
  gap:12px;
  padding:4px 0 26px;
  border-bottom:1px solid var(--koji-line);
  text-decoration:none;
  color:inherit;
  transition:border-bottom-color .26s ease;
}
/* 片側しか記事が無いとき（最古 / 最新）は不自然な 50% 幅にしない。 */
.koji-postnav-item:only-child{grid-column:1 / -1}

.koji-postnav-label{
  font-family:'Inter Tight',sans-serif;
  font-size:11px;font-weight:600;letter-spacing:.24em;line-height:1.4;
  text-transform:uppercase;
  color:var(--koji-yellow);
}
.koji-postnav-meta{
  display:flex;align-items:baseline;gap:14px;
}
.koji-postnav-date,
.koji-postnav-cat{
  font-family:'Inter Tight',sans-serif;
  font-size:12px;font-weight:500;letter-spacing:.16em;line-height:1.4;
  color:var(--koji-gray);
}
.koji-postnav-cat{font-weight:600}
.koji-postnav-title{
  display:flex;align-items:flex-start;gap:12px;
  font-family:'Inter Tight',sans-serif;
  font-size:clamp(16px,1.35vw,20px);font-weight:700;line-height:1.5;
  color:var(--koji-white);
  transition:color .26s ease;
}
.koji-postnav-text{
  min-width:0;
  overflow-wrap:anywhere;   /* 360px でも横スクロールを出さない保険 */
}
.koji-postnav-arrow{
  flex:0 0 auto;
  color:var(--koji-gray);
  transition:color .26s ease,transform .26s ease;
}

/* PC は 2 カラム。NEXT は右方向性を持たせる（左右対称にはしない）。 */
@media (min-width:768px){
  .koji-postnav-item--next{align-items:flex-end;text-align:right}
  .koji-postnav-item--next .koji-postnav-meta{justify-content:flex-end}
}

/* Hover は静かに。scale / bounce / glow / JS ライブラリは使わない。 */
@media (hover:hover){
  .koji-postnav-item:hover{border-bottom-color:rgba(255,212,0,.45)}
  .koji-postnav-item:hover .koji-postnav-title{color:var(--koji-yellow)}
  .koji-postnav-item:hover .koji-postnav-arrow{color:var(--koji-yellow)}
  .koji-postnav-item--prev:hover .koji-postnav-arrow{transform:translateX(-6px)}
  .koji-postnav-item--next:hover .koji-postnav-arrow{transform:translateX(6px)}
}
.koji-postnav-item:focus-visible{
  outline:2px solid var(--koji-yellow);
  outline-offset:6px;
}

/* モバイルは縦積み。両方とも左揃えのまま矢印だけで方向を出す。 */
@media (max-width:767px){
  .koji-postnav{margin-top:48px;padding-top:30px}
  .koji-postnav-inner{grid-template-columns:1fr}
  .koji-postnav-item{gap:10px;padding:18px 0 20px}
  .koji-postnav-item:first-child{padding-top:0}
  .koji-postnav-title{font-size:17px;gap:10px}
  .koji-postnav-meta{gap:12px}
  .koji-postnav-date,.koji-postnav-cat{font-size:11px;letter-spacing:.14em}
}

/* ===================================================================
   NEWS Archive / Desktop の記事 Row 間の過剰な縦余白（2026-08-11）

   原因（1440px ・ 匿名で実測）:
     Archive の body には ast-separate-container が付き、
     Astra は各ループ項目（.e-loop-item）に ast-article-post を付与する。
     そこへ Astra の main.min.css の
       .ast-separate-container .ast-article-post{ padding: 5.34em 6.67em; }
     が当たり、各項目の上下に 85.44px の padding が付いていた。
     Row 同士の距離 170.9px は 85.44 × 2 と完全に一致する。

     Loop Grid の Rows Gap でも Loop Container の gap でもない。
     実測では .elementor-loop-container の row-gap は TOP ・ Archive とも 0px、
     項目間の距離（itemGaps）も 0px で、差は padding のみだった。

   TOP に出ない理由:
     TOP の body は ast-page-builder-template で、ループ項目のクラスは
     ast-article-single のため上記ルールに一致しない（実測で padding 0px）。
     同じ原因で発生していた border-bottom はすでに上のブロックで打ち消している。

   対応:
     Astra が大きい padding に切り替わる境界を実測したところ
       ≤921px → 21.888px、≥922px → 53.44px（広い画面では 85.44px）
     だったので、min-width:922px で囲って上下の padding だけを止める。
     これにより 375px / 768px の見た目は 1px も変わらない。

     左右の padding（106.72px）は今回触っていない。
     Row の横幅が変わる変更になるため、別途承認を取ってからにする。

   スコープ:
     ast-article-post は Archive にしか存在しない（TOP は ast-article-single）。
     さらに .koji-news-teaser .elementor-loop-container > で絞っている。
     詳細度は (0,3,0) で Astra の (0,2,0) に勝つため !important は使っていない。
     Loop Item 2438 自体・Row の padding / typography / separator は一切変更していない。
   =================================================================== */
/* 上下 padding: 全幅で止める。
   Desktop の Row 間の巨大な空白（170.9px = 85.44×2）と
   Mobile の Row 間の空白（45px = 22.5×2）は同じ Astra padding が原因。
   これを 0 にすると、Row 自身の上下 padding（Desktop 22px / Mobile 20px）と
   1px separator だけでリズムが成立し、TOP NEWS と完全に同じテンポになる。 */
.koji-news-teaser .elementor-loop-container > .ast-article-post{
  padding-top:0;
  padding-bottom:0;
}

/* 左右 padding: Desktop（≥922px）のみ止める。
   この padding（1440px で 106.72px / 1024px で 38.4px）が、
   NEWS 見出し・VIEW ALL NEWS が left=220 なのに
   記事一覧だけ left=326.7 へ押し込まれていた単一の原因。
   外側の Container / Loop Grid はすべてすでに left=220 / width=1000 で揃っており、
   max-width も margin も問題ではなかった（実測済み）。
   transform や負の margin による強引な移動は使っていない。

   Mobile（<922px）の左右 padding（15px）は意図的に残している。
   今回の Mobile 修正は縦方向のみで、左右余白は現状維持とするため。 */
@media (min-width:922px){
  .koji-news-teaser .elementor-loop-container > .ast-article-post{
    padding-left:0;
    padding-right:0;
  }
}/* End custom CSS */