/* Clean academic entry layer. The original Argon/Inori theme stays underneath. */
:root {
    --ip-ink: #22222a;
    --ip-text: #43434f;
    --ip-muted: #76737f;
    --ip-faint: #aaa4af;
    --ip-line: #e8e3ea;
    --ip-line-strong: #d7d0da;
    --ip-paper: #ffffff;
    --ip-bg: #fbfafc;
    --ip-soft: #fff4f8;
    --ip-soft-2: #f4f8f7;
    --ip-accent: #e85d93;
    --ip-green: #6f8e84;
    --ip-radius: 8px;
    --ip-shadow: 0 18px 48px rgba(34, 28, 38, 0.08);
    --ip-parallax-x: 0px;
    --ip-parallax-y: 0px;
}

html.inori-portal-preview {
    scroll-behavior: smooth;
}

html.ip-academic-dark {
    --ip-ink: #f3eef4;
    --ip-text: #e4dde5;
    --ip-muted: #c2b7c3;
    --ip-faint: #978d9b;
    --ip-line: rgba(255, 255, 255, 0.14);
    --ip-line-strong: rgba(255, 255, 255, 0.24);
    --ip-paper: #1e1c23;
    --ip-bg: #15141a;
    --ip-soft: #292027;
    --ip-soft-2: #1d2827;
    --ip-shadow: 0 20px 54px rgba(0, 0, 0, 0.30);
}

#inori-portal-root {
    position: relative;
    z-index: 2147483000;
    color: var(--ip-text);
    font-family: Inter, "SF Pro Text", "Segoe UI", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;
}

#inori-portal-root *,
#inori-portal-root *::before,
#inori-portal-root *::after {
    box-sizing: border-box;
}

.ip-shell {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    overflow: auto;
    overflow-x: hidden;
    background:
        linear-gradient(135deg, rgba(232, 93, 147, 0.055), transparent 34%),
        linear-gradient(315deg, rgba(111, 142, 132, 0.06), transparent 38%),
        var(--ip-bg);
    transition: opacity 0.22s ease, visibility 0.22s ease;
}

html.ip-original-view .ip-shell {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.ip-topbar {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-height: 62px;
    padding: 10px 32px;
    border-bottom: 1px solid var(--ip-line);
    background: color-mix(in srgb, var(--ip-paper) 88%, transparent);
    backdrop-filter: blur(18px);
}

.ip-brand {
    display: flex;
    align-items: center;
    gap: 11px;
    min-width: 0;
    color: var(--ip-ink);
    text-decoration: none;
}

.ip-logo {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--ip-line-strong);
    border-radius: 8px;
    background: linear-gradient(135deg, var(--ip-paper), var(--ip-soft));
    color: var(--ip-accent);
    font-weight: 850;
}

.ip-brand strong,
.ip-brand em {
    display: block;
    line-height: 1.1;
}

.ip-brand strong {
    font-size: 15px;
    letter-spacing: 0;
}

.ip-brand em {
    margin-top: 3px;
    color: var(--ip-muted);
    font-size: 12px;
    font-style: normal;
}

.ip-nav {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
}

.ip-nav a {
    color: var(--ip-muted);
    font-size: 14px;
    font-weight: 760;
    text-decoration: none;
}

.ip-nav a:hover {
    color: var(--ip-accent);
}

.ip-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 32px;
    padding: 0 11px;
    border: 1px solid var(--ip-line);
    border-radius: 999px;
    color: var(--ip-muted);
    font-size: 12px;
}

.ip-status b {
    color: var(--ip-ink);
    font-weight: 850;
}

.ip-status em {
    font-style: normal;
}

.ip-main {
    width: min(1100px, calc(100vw - 48px));
    margin: 34px auto 64px;
}

.ip-layout {
    display: grid;
    grid-template-columns: 276px minmax(0, 1fr);
    gap: 22px;
    align-items: start;
    min-width: 0;
}

.ip-section {
    max-width: 100%;
    min-width: 0;
    border: 1px solid var(--ip-line);
    border-radius: var(--ip-radius);
    background: color-mix(in srgb, var(--ip-paper) 96%, transparent);
    box-shadow: var(--ip-shadow);
}

.ip-profile {
    position: sticky;
    top: 84px;
    display: grid;
    gap: 15px;
    padding: 24px;
}

.ip-avatar {
    display: grid;
    place-items: center;
    width: 104px;
    height: 104px;
    border: 1px solid var(--ip-line-strong);
    border-radius: 8px;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--ip-accent) 10%, var(--ip-paper)), var(--ip-paper)),
        var(--ip-paper);
    color: var(--ip-accent);
    font-size: 40px;
    font-weight: 860;
    font-family: "SF Pro Display", "Segoe UI", sans-serif;
}

.ip-profile h2,
.ip-hero h1,
.ip-section h2 {
    margin: 0;
    color: var(--ip-ink);
    letter-spacing: 0;
}

.ip-profile h2 {
    font-size: 27px;
    line-height: 1.12;
}

.ip-profile p,
.ip-lead,
.ip-post-card p,
.ip-empty {
    color: var(--ip-muted);
    line-height: 1.76;
}

.ip-profile p {
    margin: 0;
}

.ip-profile dl {
    display: grid;
    gap: 10px;
    margin: 2px 0 0;
}

.ip-profile dl div {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    gap: 10px;
    padding-top: 11px;
    border-top: 1px solid var(--ip-line);
}

.ip-profile dt,
.ip-profile dd {
    margin: 0;
    font-size: 13px;
}

.ip-profile dt {
    color: var(--ip-faint);
    font-weight: 820;
}

.ip-profile dd {
    color: var(--ip-text);
}

.ip-profile-links,
.ip-chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.ip-profile-links a,
.ip-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 31px;
    padding: 0 11px;
    border: 1px solid var(--ip-line);
    border-radius: 999px;
    background: var(--ip-paper);
    color: var(--ip-muted);
    font-size: 13px;
    font-weight: 760;
    text-decoration: none;
}

.ip-chip em {
    color: var(--ip-faint);
    font-style: normal;
}

.ip-profile-links a:hover,
.ip-chip:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 58%, var(--ip-line));
    color: var(--ip-accent);
    transform: translateY(-1px);
    text-decoration: none;
}

.ip-content {
    display: grid;
    gap: 18px;
    min-width: 0;
}

.ip-hero {
    position: relative;
    padding: 36px 38px;
}

.ip-kicker {
    margin: 0 0 9px;
    color: var(--ip-accent);
    font-size: 11px;
    font-weight: 880;
    letter-spacing: 0.045em;
    text-transform: uppercase;
}

.ip-hero h1 {
    max-width: 760px;
    font-family: "SF Pro Display", "Segoe UI", "Microsoft YaHei", sans-serif;
    font-size: 46px;
    font-weight: 680;
    line-height: 1.08;
    overflow-wrap: anywhere;
}

.ip-lead {
    max-width: 760px;
    margin: 15px 0 0;
    font-size: 16px;
    overflow-wrap: anywhere;
}

.ip-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 24px;
}

.ip-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 39px;
    padding: 0 15px;
    border: 1px solid var(--ip-line-strong);
    border-radius: var(--ip-radius);
    background: var(--ip-paper);
    color: var(--ip-ink);
    font: inherit;
    font-size: 14px;
    font-weight: 820;
    text-decoration: none;
    cursor: pointer;
}

.ip-btn:hover {
    border-color: var(--ip-accent);
    color: var(--ip-accent);
    text-decoration: none;
}

.ip-btn-primary {
    border-color: var(--ip-accent);
    background: var(--ip-accent);
    color: #fff;
}

.ip-btn-primary:hover {
    background: #dd5288;
    color: #fff;
}

.ip-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 27px;
}

.ip-metric {
    min-height: 76px;
    padding: 15px;
    border: 1px solid var(--ip-line);
    border-radius: var(--ip-radius);
    background: color-mix(in srgb, var(--ip-bg) 74%, var(--ip-paper));
}

.ip-metric strong,
.ip-metric span {
    display: block;
}

.ip-metric strong {
    color: var(--ip-ink);
    font-size: 25px;
    line-height: 1;
}

.ip-metric span {
    margin-top: 8px;
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 760;
}

.ip-section:not(.ip-hero):not(.ip-profile) {
    padding: 24px;
}

.ip-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.ip-section-head h2 {
    font-size: 24px;
    font-weight: 650;
}

.ip-read-time {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0 11px;
    border: 1px solid var(--ip-line);
    border-radius: 999px;
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 760;
    white-space: nowrap;
}

.ip-post-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.ip-post-card {
    display: grid;
    gap: 9px;
    min-height: 180px;
    padding: 17px;
    border: 1px solid var(--ip-line);
    border-radius: var(--ip-radius);
    background: color-mix(in srgb, var(--ip-bg) 76%, var(--ip-paper));
    color: var(--ip-text);
    text-decoration: none;
    cursor: pointer;
}

.ip-post-card:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 58%, var(--ip-line));
    transform: translateY(-2px);
    text-decoration: none;
}

.ip-post-meta,
.ip-card-foot em {
    color: var(--ip-faint);
    font-size: 12px;
    font-style: normal;
    font-weight: 820;
}

.ip-post-card strong {
    color: var(--ip-ink);
    font-size: 18px;
    line-height: 1.32;
    overflow-wrap: anywhere;
}

.ip-post-card p {
    margin: 0;
    font-size: 14px;
}

.ip-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    align-self: end;
}

.ip-card-foot b {
    color: var(--ip-accent);
    font-size: 12px;
    font-weight: 850;
}

.ip-reader {
    overflow: hidden;
}

.ip-reader-body {
    color: var(--ip-text);
    font-size: 16px;
    line-height: 1.82;
}

.ip-reader-body > *:first-child {
    margin-top: 0;
}

.ip-reader-body h1,
.ip-reader-body h2,
.ip-reader-body h3,
.ip-reader-body h4 {
    color: var(--ip-ink);
    line-height: 1.3;
    letter-spacing: 0;
}

.ip-reader-body h2 {
    margin-top: 2em;
    padding-top: 0.5em;
    border-top: 1px solid var(--ip-line);
}

.ip-reader-body a {
    color: var(--ip-accent);
}

.ip-reader-body img {
    max-width: 100%;
    height: auto;
    border-radius: var(--ip-radius);
}

.ip-reader-body pre {
    position: relative;
    overflow: auto;
    padding: 18px;
    border: 1px solid var(--ip-line);
    border-radius: var(--ip-radius);
    background: #17151b;
    color: #f4edf4;
}

.ip-reader-body code {
    font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
}

.ip-reader-body :not(pre) > code {
    padding: 0.14em 0.35em;
    border-radius: 5px;
    background: var(--ip-soft);
    color: var(--ip-accent);
}

.ip-copy-button {
    position: absolute;
    right: 10px;
    top: 10px;
    min-height: 28px;
    padding: 0 9px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.10);
    color: #fff;
    font-size: 12px;
    cursor: pointer;
}

.ip-archive-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.ip-archive-month {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 49px;
    padding: 0 14px;
    border: 1px solid var(--ip-line);
    border-radius: var(--ip-radius);
    background: color-mix(in srgb, var(--ip-bg) 78%, var(--ip-paper));
}

.ip-archive-month strong {
    color: var(--ip-ink);
    font-size: 14px;
}

.ip-archive-month span {
    color: var(--ip-muted);
    font-size: 13px;
}

.ip-empty {
    margin: 0;
    padding: 14px;
}

.ip-cord {
    position: fixed;
    right: 28px;
    top: 0;
    z-index: 2147483003;
    width: 42px;
    height: 112px;
    border: 0;
    background: transparent;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.ip-cord:focus,
.ip-cord:focus-visible,
.ip-mode-switch:focus,
.ip-mode-switch:focus-visible,
.ip-os-trigger:focus,
.ip-os-trigger:focus-visible {
    outline: none;
}

.ip-cord:focus-visible i {
    box-shadow:
        0 0 0 4px rgba(232, 93, 147, 0.16),
        0 8px 18px rgba(42, 32, 40, 0.12);
}

html.ip-original-view .ip-cord {
    display: none;
}

.ip-cord span {
    position: absolute;
    left: 20px;
    top: 0;
    width: 2px;
    height: 76px;
    background: linear-gradient(180deg, var(--ip-accent), rgba(232, 93, 147, 0.42));
}

.ip-cord i {
    position: absolute;
    left: 9px;
    top: 72px;
    width: 24px;
    height: 24px;
    border: 1px solid var(--ip-line-strong);
    border-radius: 50%;
    background: var(--ip-paper);
    box-shadow: 0 8px 18px rgba(42, 32, 40, 0.12);
}

.ip-cord.ip-pulled span {
    animation: ipCordPull 0.34s ease;
}

.ip-cord.ip-pulled i {
    animation: ipKnobPull 0.34s ease;
}

@keyframes ipCordPull {
    0% { height: 76px; }
    45% { height: 96px; }
    100% { height: 76px; }
}

@keyframes ipKnobPull {
    0% { transform: translateY(0); }
    45% { transform: translateY(20px); }
    100% { transform: translateY(0); }
}

.ip-mode-switch {
    position: fixed;
    right: 18px;
    top: 50%;
    z-index: 2147483004;
    display: none;
    align-items: center;
    justify-content: flex-start;
    width: 52px;
    height: 30px;
    padding: 3px;
    border: 1px solid rgba(232, 93, 147, 0.42);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.68);
    box-shadow: 0 12px 26px rgba(42, 32, 40, 0.14);
    cursor: pointer;
    opacity: 0.82;
    transform: translateY(-50%);
    backdrop-filter: blur(12px);
    transition: opacity 0.18s ease, transform 0.18s ease, border-color 0.18s ease;
}

.ip-mode-switch:hover {
    border-color: rgba(232, 93, 147, 0.68);
    opacity: 1;
    transform: translateY(-50%) translateX(-2px);
}

.ip-mode-switch span {
    position: absolute;
    left: 10px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--ip-accent);
    opacity: 0.36;
}

.ip-mode-switch i {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 4px 12px rgba(42, 32, 40, 0.18);
    transform: translateX(22px);
}

html.ip-original-view .ip-mode-switch {
    display: inline-flex;
}

.ip-os-trigger,
.ip-os-panel {
    position: fixed;
    display: none;
    font-family: Inter, "SF Pro Text", "Segoe UI", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;
}

.ip-os-trigger {
    right: 18px;
    top: calc(50% + 52px);
    z-index: 2147483004;
    width: 52px;
    height: 34px;
    border: 1px solid rgba(232, 93, 147, 0.46);
    border-radius: 999px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, 0.76), rgba(255, 229, 241, 0.66));
    color: #d94f87;
    box-shadow: 0 12px 28px rgba(42, 32, 40, 0.16);
    cursor: pointer;
    opacity: 0.88;
    backdrop-filter: blur(14px);
    transition: opacity 0.18s ease, transform 0.18s ease, border-color 0.18s ease;
}

.ip-os-trigger:hover {
    border-color: rgba(232, 93, 147, 0.72);
    opacity: 1;
    transform: translateX(-2px);
}

.ip-os-trigger span {
    font-size: 12px;
    font-weight: 880;
    letter-spacing: 0;
}

html.ip-original-view .ip-os-trigger {
    display: grid;
    place-items: center;
}

.ip-os-panel {
    right: 18px;
    top: 70px;
    z-index: 2147483003;
    width: min(430px, calc(100vw - 32px));
    max-height: min(720px, calc(100vh - 104px));
    overflow: hidden;
    border: 1px solid rgba(255, 173, 207, 0.34);
    border-radius: 10px;
    background:
        linear-gradient(160deg, rgba(31, 22, 34, 0.90), rgba(55, 34, 48, 0.82)),
        radial-gradient(circle at 18% 8%, rgba(232, 93, 147, 0.24), transparent 34%);
    color: rgba(255, 246, 250, 0.92);
    box-shadow: 0 24px 78px rgba(25, 18, 28, 0.36);
    backdrop-filter: blur(18px);
    transform: translateX(24px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.24s ease, transform 0.24s ease;
}

html.ip-original-view.ip-os-open .ip-os-panel {
    display: block;
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
}

.ip-os-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 18px 12px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.10);
}

.ip-os-head p,
.ip-os-kicker {
    margin: 0;
    color: rgba(255, 181, 211, 0.92);
    font-size: 11px;
    font-weight: 880;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.ip-os-head strong {
    display: block;
    margin-top: 4px;
    color: #fff;
    font-size: 18px;
    font-weight: 760;
    letter-spacing: 0;
}

.ip-os-head button {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.86);
    cursor: pointer;
}

.ip-os-status {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 8px;
    align-items: center;
    padding: 12px 18px;
}

.ip-os-status span,
.ip-os-status button {
    min-height: 30px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.07);
    color: rgba(255, 246, 250, 0.88);
    font-size: 12px;
    font-weight: 760;
}

.ip-os-status span {
    display: inline-flex;
    align-items: center;
    padding: 0 10px;
}

.ip-os-status button {
    padding: 0 12px;
    cursor: pointer;
}

.ip-os-tabs {
    display: flex;
    gap: 7px;
    overflow-x: auto;
    padding: 0 18px 12px;
}

.ip-os-tab {
    flex: 0 0 auto;
    min-height: 31px;
    padding: 0 11px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 246, 250, 0.72);
    font-size: 12px;
    font-weight: 820;
    cursor: pointer;
}

.ip-os-tab.is-active {
    border-color: rgba(255, 179, 211, 0.58);
    background: rgba(232, 93, 147, 0.24);
    color: #fff;
}

.ip-os-body {
    max-height: calc(min(720px, 100vh - 104px) - 154px);
    overflow: auto;
    padding: 2px 18px 18px;
}

.ip-os-view {
    display: none;
}

.ip-os-view.is-active {
    display: block;
}

.ip-os-graph svg {
    display: block;
    width: 100%;
    height: auto;
    margin-top: 10px;
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.05);
}

.ip-os-graph line {
    stroke: rgba(255, 178, 211, 0.32);
    stroke-width: 1.2;
}

.ip-os-graph circle {
    fill: rgba(232, 93, 147, 0.24);
    stroke: rgba(255, 214, 232, 0.62);
}

.ip-os-graph-core circle {
    fill: rgba(255, 255, 255, 0.10);
}

.ip-os-graph text {
    fill: rgba(255, 246, 250, 0.82);
    font-size: 11px;
    font-weight: 760;
    text-anchor: middle;
}

.ip-os-topic-cloud,
.ip-os-lab-grid,
.ip-os-vault,
.ip-os-related,
.ip-os-results {
    display: grid;
    gap: 8px;
    margin-top: 12px;
}

.ip-os-topic-cloud {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ip-os-topic-cloud button,
.ip-os-lab-card,
.ip-os-vault div,
.ip-os-result,
.ip-os-related a,
.ip-os-reader-card,
.ip-os-toc {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.07);
    color: rgba(255, 246, 250, 0.88);
    text-decoration: none;
}

.ip-os-topic-cloud button {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 36px;
    padding: 0 10px;
    font-size: 12px;
    font-weight: 760;
    cursor: pointer;
}

.ip-os-topic-cloud span {
    color: rgba(255, 190, 216, 0.82);
}

.ip-os-search {
    width: 100%;
    min-height: 40px;
    margin-top: 12px;
    border: 1px solid rgba(255, 184, 214, 0.34);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.10);
    color: #fff;
    font: inherit;
    font-size: 13px;
    outline: none;
    padding: 0 12px;
}

.ip-os-search::placeholder {
    color: rgba(255, 246, 250, 0.46);
}

.ip-os-result,
.ip-os-related a {
    display: block;
    padding: 11px 12px;
}

.ip-os-result span {
    display: block;
    color: rgba(255, 190, 216, 0.72);
    font-size: 11px;
    font-weight: 820;
}

.ip-os-result strong,
.ip-os-lab-card strong,
.ip-os-vault strong,
.ip-os-reader-card strong {
    display: block;
    margin-top: 4px;
    color: #fff;
    font-size: 14px;
    line-height: 1.35;
}

.ip-os-lab-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ip-os-lab-card {
    min-height: 118px;
    padding: 13px;
    text-align: left;
    cursor: pointer;
}

.ip-os-lab-card span,
.ip-os-lab-card em,
.ip-os-vault p,
.ip-os-reader-card p,
.ip-os-empty,
.ip-os-toc p {
    color: rgba(255, 246, 250, 0.62);
    font-size: 12px;
    font-style: normal;
    line-height: 1.6;
}

.ip-os-lab-card em,
.ip-os-vault p,
.ip-os-reader-card p {
    display: block;
    margin: 7px 0 0;
}

.ip-os-vault div,
.ip-os-reader-card,
.ip-os-toc {
    padding: 12px;
}

.ip-os-toc {
    max-height: 210px;
    overflow: auto;
    margin-top: 10px;
}

.ip-os-toc-link {
    display: block;
    padding: 7px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    color: rgba(255, 246, 250, 0.82);
    font-size: 13px;
    text-decoration: none;
}

.ip-os-toc-h3 {
    padding-left: 12px;
    color: rgba(255, 246, 250, 0.64);
}

.ip-original-copy-ready {
    position: relative;
}

.ip-original-copy-button {
    position: absolute;
    right: 10px;
    top: 10px;
    z-index: 2;
    min-height: 28px;
    padding: 0 9px;
    border: 1px solid rgba(255, 184, 214, 0.34);
    border-radius: 6px;
    background: rgba(34, 24, 36, 0.72);
    color: #fff;
    font-size: 12px;
    cursor: pointer;
    backdrop-filter: blur(8px);
}

.ip-modal,
.ip-transition {
    position: fixed;
    inset: 0;
    z-index: 2147483005;
    display: none;
}

.ip-modal.ip-open,
.ip-transition.ip-run {
    display: block;
}

.ip-modal {
    background:
        linear-gradient(180deg, rgba(34, 31, 39, 0.46), rgba(34, 31, 39, 0.34));
    backdrop-filter: blur(12px);
}

.ip-modal-panel {
    position: fixed;
    left: 50%;
    top: 50%;
    width: min(460px, calc(100vw - 32px));
    transform: translate(-50%, -50%);
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 72%, rgba(255, 255, 255, 0.4));
    border-radius: 8px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(255, 245, 249, 0.86));
    padding: 26px;
    box-shadow: 0 30px 90px rgba(28, 22, 32, 0.26);
}

html.ip-academic-dark .ip-modal-panel {
    background:
        linear-gradient(135deg, rgba(35, 31, 39, 0.94), rgba(43, 32, 40, 0.90));
}

.ip-modal-mark {
    position: absolute;
    right: 24px;
    top: 22px;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(232, 93, 147, 0.28);
    border-radius: 50%;
}

.ip-modal-mark::before {
    content: "";
    position: absolute;
    left: 10px;
    top: 6px;
    width: 13px;
    height: 20px;
    border-radius: 80% 20% 80% 20%;
    background: rgba(232, 93, 147, 0.54);
    transform: rotate(28deg);
}

.ip-modal-panel h3 {
    margin: 0;
    color: var(--ip-ink);
    font-size: 27px;
    font-weight: 660;
    letter-spacing: 0;
}

.ip-modal-copy {
    max-width: 350px;
    margin: 10px 0 0;
    color: var(--ip-muted);
    font-size: 14px;
    line-height: 1.7;
}

.ip-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 8px;
    margin-top: 18px;
}

.ip-input {
    width: 100%;
    min-height: 40px;
    border: 1px solid var(--ip-line-strong);
    border-radius: var(--ip-radius);
    background: var(--ip-paper);
    color: var(--ip-text);
    font: inherit;
    font-size: 14px;
    outline: none;
    padding: 0 12px;
}

.ip-input:focus {
    border-color: var(--ip-accent);
    box-shadow: 0 0 0 3px rgba(232, 93, 147, 0.14);
}

.ip-error {
    min-height: 18px;
    margin: 8px 0 0;
    color: #b83f63;
    font-size: 13px;
}

.ip-transition {
    pointer-events: none;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 38%, rgba(255, 238, 246, 0.14), transparent 42%),
        rgba(26, 23, 30, 0);
}

.ip-wipe {
    position: absolute;
    inset: -8%;
    background:
        radial-gradient(ellipse at 50% 45%, rgba(255, 236, 245, 0.32), transparent 48%),
        linear-gradient(180deg, rgba(24, 21, 29, 0.10), rgba(255, 236, 244, 0.14), rgba(24, 21, 29, 0.08));
    filter: blur(1px);
    animation: ipSoftVeil 4.9s ease both;
}

.ip-petals span {
    position: absolute;
    left: var(--x);
    top: var(--start);
    width: var(--w);
    height: var(--h);
    border-radius: 80% 20% 80% 20%;
    background:
        radial-gradient(circle at 68% 28%, rgba(255, 255, 255, 0.72), transparent 22%),
        linear-gradient(135deg, rgba(255, 220, 234, var(--alpha)), rgba(232, 93, 147, var(--tint)));
    box-shadow: 0 0 12px rgba(232, 93, 147, 0.10);
    opacity: 0;
    transform-origin: 60% 20%;
    animation: ipPetalFall var(--dur) cubic-bezier(0.28, 0.62, 0.34, 1) forwards;
    animation-delay: var(--delay);
}

.ip-petals span::after {
    content: "";
    position: absolute;
    left: 46%;
    top: 8%;
    width: 1px;
    height: 70%;
    background: rgba(255, 255, 255, 0.30);
    transform: rotate(18deg);
}

.ip-petal-depth-0 {
    filter: blur(0.1px);
}

.ip-petal-depth-1 {
    filter: blur(0.6px);
}

.ip-petal-depth-2 {
    filter: blur(1px);
}

.ip-petal-depth-3 {
    filter: blur(1.4px);
}

@keyframes ipSoftVeil {
    0% { opacity: 0; }
    18% { opacity: 0.78; }
    58% { opacity: 0.62; }
    100% { opacity: 0; }
}

@keyframes ipPetalFall {
    0% {
        opacity: 0;
        transform: translate3d(0, -8vh, 0) rotate(0deg) rotateY(0deg);
    }
    12% {
        opacity: var(--alpha);
    }
    32% {
        transform: translate3d(var(--sway-back), 34vh, 0) rotate(96deg) rotateY(68deg);
    }
    62% {
        opacity: var(--alpha-mid);
        transform: translate3d(var(--sway), 72vh, 0) rotate(218deg) rotateY(148deg);
    }
    100% {
        opacity: 0;
        transform: translate3d(var(--drift), 120vh, 0) rotate(380deg) rotateY(220deg);
    }
}

.ip-toast {
    position: fixed;
    left: 50%;
    bottom: 28px;
    z-index: 2147483006;
    transform: translateX(-50%) translateY(12px);
    opacity: 0;
    min-height: 38px;
    padding: 10px 14px;
    border: 1px solid var(--ip-line);
    border-radius: 999px;
    background: var(--ip-paper);
    color: var(--ip-text);
    font-size: 13px;
    font-weight: 760;
    box-shadow: 0 12px 30px rgba(42, 32, 40, 0.14);
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.ip-toast.ip-open {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
}

.ip-reader-progress {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 2147483002;
    width: 100%;
    height: 2px;
    pointer-events: none;
}

.ip-reader-progress span {
    display: block;
    width: 0;
    height: 100%;
    background: var(--ip-accent);
}

@media (max-width: 980px) {
    .ip-layout {
        grid-template-columns: 1fr;
    }
    .ip-profile {
        position: static;
    }
    .ip-profile dl {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .ip-profile dl div {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 740px) {
    .ip-topbar {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
        padding: 10px 16px;
    }
    .ip-brand,
    .ip-nav {
        width: 100%;
    }
    .ip-nav {
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 10px;
    }
    .ip-main {
        width: 100%;
        margin-top: 18px;
        padding: 0 12px;
    }
    .ip-layout,
    .ip-content {
        display: block;
        width: 100%;
    }
    .ip-content {
        margin-top: 18px;
    }
    .ip-profile,
    .ip-hero,
    .ip-section {
        width: 100%;
    }
    .ip-content .ip-section + .ip-section {
        margin-top: 18px;
    }
    .ip-hero {
        padding: 24px;
    }
    .ip-hero h1 {
        max-width: 100%;
        font-size: 31px;
        line-height: 1.18;
        word-break: break-word;
    }
    .ip-lead {
        max-width: 100%;
    }
    .ip-metrics,
    .ip-post-grid,
    .ip-archive-list,
    .ip-profile dl,
    .ip-form,
    .ip-actions {
        grid-template-columns: 1fr;
    }
    .ip-actions {
        display: grid;
    }
    .ip-actions .ip-btn {
        width: 100%;
    }
    .ip-section:not(.ip-hero):not(.ip-profile) {
        padding: 18px;
    }
    .ip-section-head {
        align-items: flex-start;
        flex-direction: column;
    }
    .ip-form {
        display: grid;
    }
    .ip-status em {
        display: none;
    }
    .ip-cord {
        right: 12px;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
    }

    #inori-portal-root .ip-transition.ip-run .ip-wipe {
        animation-duration: 4.9s !important;
        animation-iteration-count: 1 !important;
    }

    #inori-portal-root .ip-transition.ip-run .ip-petals span {
        animation-duration: var(--dur) !important;
        animation-delay: var(--delay) !important;
        animation-iteration-count: 1 !important;
    }
}

/* Academic polish and interactive OS extensions. */
:root {
    --ip-ink: #24232b;
    --ip-text: #45424d;
    --ip-muted: #77717d;
    --ip-faint: #a39ba8;
    --ip-line: rgba(45, 41, 52, 0.11);
    --ip-line-strong: rgba(45, 41, 52, 0.18);
    --ip-paper: #ffffff;
    --ip-bg: #faf9fb;
    --ip-soft: #fff3f7;
    --ip-soft-2: #eef7f4;
    --ip-accent: #df5e91;
    --ip-accent-soft: rgba(223, 94, 145, 0.13);
    --ip-teal: #5c8f88;
    --ip-gold: #a47a38;
    --ip-shadow: 0 20px 54px rgba(35, 30, 42, 0.08);
    --ip-shadow-soft: 0 10px 30px rgba(35, 30, 42, 0.06);
}

html.ip-academic-dark {
    --ip-ink: #f4eff5;
    --ip-text: #ded7e2;
    --ip-muted: #b8adbd;
    --ip-faint: #8f8595;
    --ip-line: rgba(255, 255, 255, 0.12);
    --ip-line-strong: rgba(255, 255, 255, 0.20);
    --ip-paper: #1d1b22;
    --ip-bg: #131219;
    --ip-soft: #2a2029;
    --ip-soft-2: #182624;
    --ip-accent-soft: rgba(232, 111, 158, 0.18);
    --ip-shadow: 0 22px 60px rgba(0, 0, 0, 0.32);
    --ip-shadow-soft: 0 12px 34px rgba(0, 0, 0, 0.26);
}

.ip-shell {
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 70%, transparent), transparent 280px),
        radial-gradient(circle at 12% 14%, color-mix(in srgb, var(--ip-accent) 9%, transparent), transparent 30%),
        radial-gradient(circle at 88% 8%, color-mix(in srgb, var(--ip-teal) 11%, transparent), transparent 28%),
        linear-gradient(135deg, color-mix(in srgb, var(--ip-bg) 86%, var(--ip-soft-2)), var(--ip-bg));
}

.ip-shell::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(125, 119, 132, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(125, 119, 132, 0.035) 1px, transparent 1px);
    background-size: 28px 28px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.56), transparent 78%);
}

.ip-topbar {
    min-height: 66px;
    padding: 12px max(26px, calc((100vw - 1180px) / 2));
    background: color-mix(in srgb, var(--ip-paper) 84%, transparent);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.24) inset;
}

.ip-brand strong {
    font-size: 16px;
}

.ip-logo {
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--ip-paper) 76%, var(--ip-soft)), color-mix(in srgb, var(--ip-soft-2) 68%, var(--ip-paper)));
    box-shadow: var(--ip-shadow-soft);
}

.ip-main {
    width: min(1180px, calc(100vw - 48px));
    margin: 38px auto 78px;
}

.ip-academic-wrap {
    display: grid;
    gap: 22px;
}

.ip-layout {
    grid-template-columns: 286px minmax(0, 1fr);
    gap: 22px;
}

.ip-section {
    border-color: var(--ip-line);
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 98%, transparent), color-mix(in srgb, var(--ip-paper) 94%, var(--ip-bg)));
    box-shadow: var(--ip-shadow);
}

.ip-hero {
    overflow: hidden;
    min-height: 336px;
    padding: 42px;
}

.ip-hero::before,
.ip-hero::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

.ip-hero::before {
    right: -110px;
    top: -120px;
    width: 380px;
    height: 380px;
    border: 1px solid color-mix(in srgb, var(--ip-accent) 18%, transparent);
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--ip-accent) 13%, transparent), transparent 66%);
    transform: translate3d(var(--ip-parallax-x), var(--ip-parallax-y), 0);
}

.ip-hero::after {
    left: 42px;
    right: 42px;
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--ip-accent) 34%, transparent), transparent);
}

.ip-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(260px, 0.75fr);
    gap: 30px;
    align-items: center;
}

.ip-hero-copy {
    min-width: 0;
}

.ip-hero h1 {
    max-width: 760px;
    font-size: clamp(38px, 5vw, 62px);
    font-weight: 720;
    line-height: 1.04;
}

.ip-lead {
    max-width: 680px;
    font-size: 16px;
    line-height: 1.82;
}

.ip-hero-panel {
    position: relative;
    display: grid;
    gap: 12px;
    min-height: 230px;
    padding: 24px;
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 82%, transparent);
    border-radius: 8px;
    background:
        linear-gradient(160deg, color-mix(in srgb, var(--ip-paper) 88%, transparent), color-mix(in srgb, var(--ip-soft) 64%, var(--ip-paper))),
        radial-gradient(circle at 80% 8%, color-mix(in srgb, var(--ip-accent) 17%, transparent), transparent 38%);
    box-shadow: var(--ip-shadow-soft);
}

.ip-hero-panel span {
    color: var(--ip-accent);
    font-size: 12px;
    font-weight: 860;
    text-transform: uppercase;
}

.ip-hero-panel strong {
    color: var(--ip-ink);
    font-size: 28px;
    line-height: 1.14;
}

.ip-hero-panel p {
    margin: 0;
    color: var(--ip-muted);
    line-height: 1.74;
}

.ip-hero-topics {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-self: end;
}

.ip-topic-pill,
.ip-chip {
    cursor: pointer;
}

.ip-topic-pill {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 10px;
    border: 1px solid var(--ip-line);
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-paper) 82%, transparent);
    color: var(--ip-muted);
    font: inherit;
    font-size: 12px;
    font-weight: 760;
}

.ip-topic-pill:hover,
.ip-tool-btn:hover,
.ip-archive-month:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 50%, var(--ip-line));
    color: var(--ip-accent);
    transform: translateY(-1px);
}

.ip-profile {
    gap: 16px;
    padding: 24px;
}

.ip-avatar {
    width: 86px;
    height: 86px;
    font-size: 34px;
}

.ip-profile h2 {
    font-size: 25px;
}

.ip-profile-links a,
.ip-chip {
    background: color-mix(in srgb, var(--ip-paper) 88%, transparent);
}

.ip-section-head-tools {
    align-items: flex-start;
}

.ip-post-tools {
    display: grid;
    grid-template-columns: minmax(190px, 1fr) auto auto auto;
    gap: 8px;
    align-items: center;
    width: min(520px, 100%);
}

.ip-search-box {
    position: relative;
    display: block;
    min-width: 0;
}

.ip-search-box span {
    position: absolute;
    left: 12px;
    top: 50%;
    color: var(--ip-faint);
    font-size: 11px;
    font-weight: 820;
    text-transform: uppercase;
    transform: translateY(-50%);
}

.ip-academic-search {
    width: 100%;
    min-height: 38px;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--ip-paper) 92%, transparent);
    color: var(--ip-text);
    font: inherit;
    font-size: 13px;
    outline: none;
    padding: 0 12px 0 66px;
}

.ip-academic-search:focus {
    border-color: color-mix(in srgb, var(--ip-accent) 62%, var(--ip-line));
    box-shadow: 0 0 0 3px var(--ip-accent-soft);
}

.ip-tool-btn,
.ip-archive-month,
.ip-chip {
    font: inherit;
    transition: transform 0.18s ease, border-color 0.18s ease, color 0.18s ease, background 0.18s ease;
}

.ip-tool-btn {
    min-height: 38px;
    padding: 0 12px;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--ip-paper) 90%, transparent);
    color: var(--ip-muted);
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
}

.ip-post-count {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 38px;
    padding: 0 10px;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    color: var(--ip-muted);
    font-size: 12px;
    white-space: nowrap;
}

.ip-post-count b {
    color: var(--ip-ink);
}

.ip-post-grid {
    gap: 14px;
}

.ip-post-card {
    min-height: 196px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 94%, transparent), color-mix(in srgb, var(--ip-bg) 68%, var(--ip-paper)));
    box-shadow: none;
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

.ip-post-card:hover {
    box-shadow: var(--ip-shadow-soft);
}

.ip-post-terms {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.ip-post-terms i {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-soft-2) 68%, transparent);
    color: var(--ip-muted);
    font-size: 11px;
    font-style: normal;
    font-weight: 720;
}

.ip-archive-month {
    width: 100%;
    cursor: pointer;
}

.ip-reader-body {
    max-width: 760px;
}

.ip-reader-body pre {
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.04), var(--ip-shadow-soft);
}

.ip-modal {
    background:
        radial-gradient(circle at 50% 38%, rgba(255, 218, 234, 0.18), transparent 34%),
        linear-gradient(180deg, rgba(25, 22, 30, 0.50), rgba(25, 22, 30, 0.38));
}

.ip-modal-panel {
    border-radius: 10px;
    background:
        linear-gradient(145deg, color-mix(in srgb, var(--ip-paper) 94%, transparent), color-mix(in srgb, var(--ip-soft) 74%, var(--ip-paper))),
        radial-gradient(circle at 84% 18%, color-mix(in srgb, var(--ip-accent) 15%, transparent), transparent 38%);
    box-shadow: 0 32px 94px rgba(28, 22, 32, 0.30);
}

.ip-modal-panel::before {
    content: "";
    position: absolute;
    inset: 10px;
    border: 1px solid color-mix(in srgb, var(--ip-accent) 14%, transparent);
    border-radius: 8px;
    pointer-events: none;
}

.ip-os-lab-stage {
    position: relative;
    min-height: 216px;
    overflow: hidden;
    margin-top: 12px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 9px;
    background:
        radial-gradient(circle at 72% 18%, rgba(255, 176, 209, 0.16), transparent 38%),
        linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.035));
}

.ip-os-lab-panel {
    display: none;
    min-height: 216px;
    padding: 16px;
}

.ip-os-lab-panel.is-active {
    display: grid;
    place-items: center;
}

.ip-os-lab-card {
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

.ip-os-lab-card:hover,
.ip-os-lab-card.is-active {
    border-color: rgba(255, 184, 214, 0.44);
    background: rgba(232, 93, 147, 0.18);
    transform: translateY(-1px);
}

.ip-lab-sakura,
.ip-lab-console,
.ip-lab-prompts,
.ip-lab-components,
.ip-lab-game {
    width: 100%;
}

.ip-lab-sakura {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 176px;
    text-align: center;
}

.ip-lab-sakura span {
    position: absolute;
    width: 15px;
    height: 23px;
    border-radius: 80% 20% 80% 20%;
    background: linear-gradient(135deg, rgba(255, 229, 239, 0.94), rgba(232, 93, 147, 0.48));
    animation: ipOsPetalFloat 4.4s ease-in-out infinite;
}

.ip-lab-sakura span:nth-child(1) { left: 24%; top: 18%; animation-delay: 0s; }
.ip-lab-sakura span:nth-child(2) { right: 22%; top: 22%; animation-delay: 0.7s; }
.ip-lab-sakura span:nth-child(3) { left: 32%; bottom: 18%; animation-delay: 1.4s; }
.ip-lab-sakura span:nth-child(4) { right: 30%; bottom: 20%; animation-delay: 2.1s; }

.ip-lab-sakura strong {
    color: #fff;
    font-size: 22px;
}

.ip-lab-sakura p,
.ip-lab-note {
    margin: 8px 0 0;
    color: rgba(255, 246, 250, 0.66);
    font-size: 12px;
    line-height: 1.7;
}

.ip-lab-canvas {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
}

.ip-lab-console {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 8px 10px;
    align-items: center;
}

.ip-lab-console code {
    min-height: 26px;
    padding: 5px 8px;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.09);
    color: rgba(255, 184, 214, 0.92);
}

.ip-lab-console span {
    color: rgba(255, 246, 250, 0.74);
    font-size: 12px;
}

.ip-lab-prompts,
.ip-lab-components {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
}

.ip-lab-prompts button,
.ip-lab-components button,
.ip-lab-components span,
.ip-lab-components label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 246, 250, 0.84);
    font: inherit;
    font-size: 12px;
}

.ip-lab-game {
    display: grid;
    justify-items: center;
    gap: 12px;
}

.ip-lab-game p {
    margin: 0;
    color: rgba(255, 246, 250, 0.74);
    font-size: 13px;
}

.ip-lab-game div {
    display: grid;
    grid-template-columns: repeat(3, 42px);
    gap: 8px;
}

.ip-lab-game button {
    width: 42px;
    height: 42px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    cursor: pointer;
}

.ip-lab-game button::before {
    content: "";
    display: block;
    width: 13px;
    height: 19px;
    margin: auto;
    border-radius: 80% 20% 80% 20%;
    background: rgba(255, 196, 221, 0.52);
    transform: rotate(28deg);
}

.ip-lab-game button.is-collected {
    border-color: rgba(255, 196, 221, 0.72);
    background: rgba(232, 93, 147, 0.24);
}

.ip-lab-game strong {
    color: #fff;
}

.ip-os-vault-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 12px;
}

.ip-os-vault-filters button {
    min-height: 30px;
    padding: 0 10px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 246, 250, 0.70);
    font: inherit;
    font-size: 12px;
    font-weight: 760;
    cursor: pointer;
}

.ip-os-vault-filters button.is-active,
.ip-os-vault-filters button:hover {
    border-color: rgba(255, 184, 214, 0.48);
    background: rgba(232, 93, 147, 0.20);
    color: #fff;
}

.ip-os-vault-list {
    display: grid;
    gap: 9px;
    margin-top: 12px;
}

.ip-os-vault-card {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px 12px;
    padding: 12px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.07);
}

.ip-os-vault-card div:first-child {
    min-width: 0;
}

.ip-os-vault-card span {
    display: block;
    color: rgba(255, 190, 216, 0.72);
    font-size: 11px;
    font-weight: 820;
}

.ip-os-vault-card strong {
    display: block;
    margin-top: 4px;
    color: #fff;
    font-size: 14px;
}

.ip-os-vault-card b {
    color: rgba(255, 221, 237, 0.94);
}

.ip-os-vault-card p,
.ip-os-vault-card em {
    grid-column: 1 / -1;
    margin: 0;
    color: rgba(255, 246, 250, 0.66);
    font-size: 12px;
    font-style: normal;
    line-height: 1.65;
}

.ip-os-vault-tags {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.ip-os-vault-tags i {
    min-height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 246, 250, 0.66);
    font-size: 11px;
    font-style: normal;
}

.ip-transition {
    background:
        radial-gradient(circle at 52% 42%, rgba(255, 233, 243, 0.16), transparent 36%),
        rgba(22, 19, 27, 0);
}

.ip-transition::before,
.ip-transition::after {
    content: "";
    position: absolute;
    inset: -10%;
    pointer-events: none;
}

.ip-transition::before {
    background:
        radial-gradient(ellipse at 50% 46%, rgba(255, 234, 243, 0.30), transparent 48%),
        linear-gradient(90deg, transparent, rgba(255, 228, 239, 0.10), transparent);
    filter: blur(10px);
    opacity: 0;
    animation: ipSakuraMist 6.8s ease both;
}

.ip-transition::after {
    background:
        linear-gradient(180deg, rgba(24, 21, 29, 0), rgba(255, 233, 243, 0.08) 42%, rgba(24, 21, 29, 0));
    opacity: 0;
    animation: ipSakuraHaze 6.8s ease both;
}

.ip-wipe {
    background:
        radial-gradient(ellipse at 50% 45%, rgba(255, 238, 246, 0.24), transparent 50%),
        linear-gradient(180deg, rgba(24, 21, 29, 0.04), rgba(255, 236, 244, 0.10), rgba(24, 21, 29, 0.04));
    animation: ipSoftVeil 6.4s ease both;
}

.ip-petals span {
    box-shadow: 0 0 16px rgba(232, 93, 147, 0.11);
    animation: ipPetalFall var(--dur) cubic-bezier(0.24, 0.58, 0.30, 1) forwards;
}

.ip-petal-depth-0 { filter: blur(0); }
.ip-petal-depth-1 { filter: blur(0.45px); }
.ip-petal-depth-2 { filter: blur(0.9px); opacity: 0.82; }
.ip-petal-depth-3 { filter: blur(1.6px); opacity: 0.72; }

@keyframes ipOsPetalFloat {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(18deg); opacity: 0.66; }
    50% { transform: translate3d(10px, 14px, 0) rotate(78deg); opacity: 1; }
}

@keyframes ipSakuraMist {
    0% { opacity: 0; transform: scale(0.98); }
    24% { opacity: 0.80; }
    68% { opacity: 0.56; }
    100% { opacity: 0; transform: scale(1.03); }
}

@keyframes ipSakuraHaze {
    0% { opacity: 0; }
    30% { opacity: 0.82; }
    70% { opacity: 0.48; }
    100% { opacity: 0; }
}

@keyframes ipSoftVeil {
    0% { opacity: 0; }
    20% { opacity: 0.58; }
    58% { opacity: 0.48; }
    100% { opacity: 0; }
}

@keyframes ipPetalFall {
    0% {
        opacity: 0;
        transform: translate3d(0, -10vh, 0) rotate(0deg) rotateY(0deg);
    }
    12% {
        opacity: var(--alpha);
    }
    34% {
        transform: translate3d(var(--sway-back), 30vh, 0) rotate(86deg) rotateY(64deg);
    }
    68% {
        opacity: var(--alpha-mid);
        transform: translate3d(var(--sway), 72vh, 0) rotate(190deg) rotateY(138deg);
    }
    100% {
        opacity: 0;
        transform: translate3d(var(--drift), 122vh, 0) rotate(var(--spin)) rotateY(214deg);
    }
}

@media (max-width: 980px) {
    .ip-main {
        width: min(760px, calc(100vw - 28px));
    }
    .ip-hero-grid,
    .ip-layout {
        grid-template-columns: 1fr;
    }
    .ip-hero-panel {
        min-height: 170px;
    }
    .ip-post-tools {
        width: 100%;
    }
}

@media (max-width: 740px) {
    .ip-topbar {
        padding: 12px 16px;
    }
    .ip-main {
        width: 100%;
        margin-top: 16px;
        padding: 0 12px;
    }
    .ip-hero {
        min-height: 0;
        padding: 26px 22px;
    }
    .ip-hero h1 {
        font-size: 33px;
    }
    .ip-hero-grid,
    .ip-post-tools,
    .ip-post-grid,
    .ip-archive-list,
    .ip-lab-prompts,
    .ip-lab-components {
        grid-template-columns: 1fr;
    }
    .ip-post-tools {
        align-items: stretch;
    }
    .ip-post-count {
        justify-content: center;
    }
    .ip-os-panel {
        right: 10px;
        width: calc(100vw - 20px);
    }
}

@media (prefers-reduced-motion: reduce) {
    #inori-portal-root .ip-transition.ip-run .ip-wipe,
    #inori-portal-root .ip-transition.ip-run::before,
    #inori-portal-root .ip-transition.ip-run::after {
        animation-duration: 4.9s !important;
        animation-iteration-count: 1 !important;
    }
}

/* Readability and layout pass. */
:root {
    --ip-ink: #20202a;
    --ip-text: #37333f;
    --ip-muted: #5f5868;
    --ip-faint: #766e7e;
    --ip-line: rgba(35, 31, 42, 0.14);
    --ip-line-strong: rgba(35, 31, 42, 0.22);
    --ip-bg: #fbfafc;
    --ip-paper: #ffffff;
    --ip-soft: #fff1f6;
    --ip-soft-2: #eef7f4;
    --ip-accent: #d94883;
    --ip-accent-soft: rgba(217, 72, 131, 0.13);
    --ip-shadow: 0 18px 48px rgba(28, 25, 34, 0.07);
    --ip-shadow-soft: 0 12px 30px rgba(28, 25, 34, 0.08);
}

html.ip-academic-dark {
    --ip-ink: #f4f1f7;
    --ip-text: #e2dce8;
    --ip-muted: #c5bbc9;
    --ip-faint: #a99ead;
    --ip-line: rgba(255, 255, 255, 0.15);
    --ip-line-strong: rgba(255, 255, 255, 0.24);
    --ip-paper: #1b1921;
    --ip-bg: #121117;
    --ip-soft: #2a2029;
    --ip-soft-2: #182624;
    --ip-accent: #ee629b;
}

#inori-portal-root {
    font-family: "Inter", "SF Pro Text", "Segoe UI", "HarmonyOS Sans SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 15px;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

.ip-shell {
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 76%, transparent), transparent 320px),
        radial-gradient(circle at 10% 12%, color-mix(in srgb, var(--ip-accent) 7%, transparent), transparent 30%),
        radial-gradient(circle at 90% 6%, color-mix(in srgb, var(--ip-teal) 10%, transparent), transparent 30%),
        linear-gradient(135deg, color-mix(in srgb, var(--ip-bg) 92%, var(--ip-soft-2)), var(--ip-bg));
}

.ip-topbar {
    padding: 12px max(24px, calc((100vw - 1320px) / 2));
}

.ip-main {
    width: min(1320px, calc(100vw - 32px));
    margin: 30px auto 82px;
}

.ip-academic-wrap {
    gap: 24px;
}

.ip-layout {
    grid-template-columns: minmax(270px, 304px) minmax(0, 1fr);
    gap: 24px;
}

.ip-section {
    border-radius: 8px;
}

.ip-hero {
    min-height: 350px;
    padding: clamp(34px, 4.5vw, 56px);
}

.ip-hero-grid {
    grid-template-columns: minmax(0, 1.55fr) minmax(280px, 0.7fr);
    gap: clamp(24px, 4vw, 48px);
}

.ip-hero h1 {
    max-width: 940px;
    color: var(--ip-ink);
    font-family: "SF Pro Display", "Segoe UI", "HarmonyOS Sans SC", "Microsoft YaHei", sans-serif;
    font-size: clamp(42px, 5.6vw, 72px);
    font-weight: 760;
    line-height: 1.02;
}

.ip-kicker {
    color: var(--ip-accent);
    font-size: 11px;
    font-weight: 900;
}

.ip-lead {
    max-width: 820px;
    color: var(--ip-muted);
    font-size: 16px;
    line-height: 1.86;
}

.ip-hero-panel {
    min-height: 244px;
    padding: 26px;
    border-radius: 8px;
}

.ip-profile {
    padding: 26px;
}

.ip-profile p,
.ip-post-card p,
.ip-empty {
    color: var(--ip-muted);
}

.ip-profile dl div {
    grid-template-columns: 78px minmax(0, 1fr);
}

.ip-profile dt,
.ip-post-meta,
.ip-card-foot em {
    color: var(--ip-faint);
}

.ip-profile dd {
    color: var(--ip-text);
    font-weight: 560;
}

.ip-section:not(.ip-hero):not(.ip-profile) {
    padding: 28px;
}

.ip-section-head {
    margin-bottom: 20px;
}

.ip-section-head h2 {
    color: var(--ip-ink);
    font-size: 26px;
    font-weight: 720;
}

.ip-post-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.ip-post-card {
    min-height: 208px;
    padding: 20px;
    border-color: var(--ip-line);
    border-radius: 8px;
}

.ip-post-card strong {
    color: var(--ip-ink);
    font-size: 18px;
    font-weight: 760;
    line-height: 1.36;
}

.ip-post-card p {
    font-size: 14px;
    line-height: 1.78;
}

.ip-btn,
.ip-tool-btn,
.ip-input,
.ip-academic-search,
.ip-modal-panel,
.ip-os-panel,
.ip-os-lab-stage,
.ip-os-lab-panel,
.ip-os-vault-card {
    border-radius: 8px;
}

.ip-btn,
.ip-tool-btn,
.ip-profile-links a,
.ip-chip,
.ip-topic-pill {
    font-weight: 820;
}

.ip-modal-panel {
    width: min(760px, calc(100vw - 32px));
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    scrollbar-width: thin;
}

.ip-admin-panel {
    position: relative;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid color-mix(in srgb, var(--ip-line-strong) 74%, transparent);
}

.ip-admin-head,
.ip-admin-login {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    min-width: 0;
}

.ip-admin-head div,
.ip-admin-login {
    min-width: 0;
}

.ip-admin-head span,
.ip-admin-login span,
.ip-editor-field span {
    display: block;
    color: var(--ip-muted);
    font-size: 11px;
    font-weight: 820;
    letter-spacing: 0;
    text-transform: uppercase;
}

.ip-admin-head strong,
.ip-admin-login strong {
    display: block;
    margin-top: 4px;
    color: var(--ip-ink);
    font-size: 15px;
    font-weight: 820;
}

.ip-admin-login {
    align-items: flex-start;
    flex-direction: column;
    padding: 16px;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background:
        linear-gradient(145deg, color-mix(in srgb, var(--ip-paper) 88%, transparent), color-mix(in srgb, var(--ip-soft) 46%, transparent));
}

.ip-admin-login p,
.ip-admin-note {
    margin: 0;
    color: var(--ip-muted);
    font-size: 13px;
    line-height: 1.65;
}

.ip-editor {
    display: none;
    margin-top: 16px;
    padding: 16px;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background:
        radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--ip-accent) 9%, transparent), transparent 34%),
        color-mix(in srgb, var(--ip-paper) 88%, transparent);
}

.ip-editor.is-open {
    display: block;
}

.ip-editor-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.ip-editor-field {
    display: grid;
    gap: 7px;
    min-width: 0;
}

.ip-editor-field-wide {
    grid-column: 1 / -1;
}

.ip-editor-field input,
.ip-editor-field textarea {
    width: 100%;
    border: 1px solid var(--ip-line-strong);
    border-radius: 8px;
    background: var(--ip-paper);
    color: var(--ip-text);
    font: inherit;
    font-size: 13px;
    outline: none;
    padding: 10px 11px;
}

.ip-editor-field textarea {
    min-height: 94px;
    resize: vertical;
    line-height: 1.65;
}

.ip-editor-field input:focus,
.ip-editor-field textarea:focus {
    border-color: var(--ip-accent);
    box-shadow: 0 0 0 3px rgba(232, 93, 147, 0.13);
}

.ip-editor-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 14px;
}

.ip-editor-actions .ip-btn:disabled {
    cursor: progress;
    opacity: 0.68;
}

@media (min-width: 1260px) {
    .ip-post-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .ip-main {
        width: min(820px, calc(100vw - 28px));
    }
    .ip-hero h1 {
        font-size: clamp(34px, 8vw, 54px);
    }
}

/* Keep the public academic mode free of original anime widgets inserted later by theme scripts. */
html.inori-portal-preview:not(.ip-original-view) .iziToast-wrapper,
html.inori-portal-preview:not(.ip-original-view) .iziToast,
html.inori-portal-preview:not(.ip-original-view) .aplayer,
html.inori-portal-preview:not(.ip-original-view) .aplayer.aplayer-fixed,
html.inori-portal-preview:not(.ip-original-view) #player,
html.inori-portal-preview:not(.ip-original-view) #waifu,
html.inori-portal-preview:not(.ip-original-view) #waifu-toggle,
html.inori-portal-preview:not(.ip-original-view) .waifu,
html.inori-portal-preview:not(.ip-original-view) #live2d-widget,
html.inori-portal-preview:not(.ip-original-view) .live2d-widget,
html.inori-portal-preview:not(.ip-original-view) canvas[id*="live2d"],
html.inori-portal-preview:not(.ip-original-view) [class*="live2d"],
html.inori-portal-preview:not(.ip-original-view) [id*="live2d"] {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

/* Original theme performance pass: avoid full-viewport blur/filter repaint while scrolling. */
html.ip-original-view #content::before,
html.ip-original-view #content::after,
html.ip-original-view #content.scrolled::before,
html.ip-original-view #content.scrolled::after {
    filter: none !important;
    transform: none !important;
    transition: opacity 0.22s ease !important;
    will-change: auto !important;
}

html.ip-original-view #navbar-main,
html.ip-original-view .card,
html.ip-original-view .post,
html.ip-original-view #leftbar,
html.ip-original-view .aplayer.aplayer-fixed,
html.ip-original-view #waifu {
    will-change: auto !important;
}

html.ip-original-view .navbar-brand.mr-0 {
    cursor: pointer;
}

/* Public academic mode uses neutral system cursors; the anime cursor returns after unlock. */
html.inori-portal-preview:not(.ip-original-view),
html.inori-portal-preview:not(.ip-original-view) body,
html.inori-portal-preview:not(.ip-original-view) .ip-shell,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root * {
    cursor: auto !important;
}

html.inori-portal-preview:not(.ip-original-view) #inori-portal-root a,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root button,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root [role="button"],
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root [data-ip-post-link],
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root .ip-cord {
    cursor: pointer !important;
}

html.inori-portal-preview:not(.ip-original-view) #inori-portal-root input,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root textarea,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root .ip-reader-body,
html.inori-portal-preview:not(.ip-original-view) #inori-portal-root .ip-reader-body * {
    cursor: text !important;
}

/* Mobile academic homepage polish. Scoped away from the unlocked Argon/Inori theme. */
@media (max-width: 740px) {
    html.inori-portal-preview:not(.ip-original-view) #inori-portal-root {
        font-size: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-shell {
        background:
            linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 84%, transparent), transparent 250px),
            radial-gradient(circle at 12% -2%, color-mix(in srgb, var(--ip-accent) 10%, transparent), transparent 34%),
            radial-gradient(circle at 96% 8%, color-mix(in srgb, var(--ip-teal) 12%, transparent), transparent 30%),
            linear-gradient(145deg, color-mix(in srgb, var(--ip-bg) 94%, var(--ip-soft-2)), var(--ip-bg));
        -webkit-overflow-scrolling: touch;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-shell::before {
        background-size: 22px 22px;
        opacity: 0.7;
        mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.44), transparent 62%);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
        gap: 8px 12px;
        min-height: 58px;
        padding: 10px max(14px, env(safe-area-inset-right)) 10px max(14px, env(safe-area-inset-left));
        border-bottom-color: color-mix(in srgb, var(--ip-line) 76%, transparent);
        background: color-mix(in srgb, var(--ip-paper) 88%, transparent);
        backdrop-filter: blur(18px);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-brand,
    html.inori-portal-preview:not(.ip-original-view) .ip-nav {
        width: auto;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-brand {
        gap: 10px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-logo {
        width: 36px;
        height: 36px;
        flex: 0 0 auto;
        border-radius: 8px;
        box-shadow: 0 8px 20px rgba(30, 27, 36, 0.08);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-brand strong {
        font-size: 15px;
        line-height: 1.12;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-brand em,
    html.inori-portal-preview:not(.ip-original-view) .ip-nav a,
    html.inori-portal-preview:not(.ip-original-view) .ip-status em {
        display: none;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-nav {
        justify-content: flex-end;
        gap: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-status {
        min-height: 31px;
        padding: 0 10px;
        border-color: color-mix(in srgb, var(--ip-accent) 24%, var(--ip-line));
        background: color-mix(in srgb, var(--ip-paper) 76%, var(--ip-soft));
        font-size: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        width: 100%;
        margin: 16px auto 58px;
        padding: 0 14px max(48px, env(safe-area-inset-bottom));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-academic-wrap,
    html.inori-portal-preview:not(.ip-original-view) .ip-content {
        display: grid;
        gap: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-layout,
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section {
        border-radius: 8px;
        box-shadow: 0 12px 32px rgba(28, 25, 34, 0.075);
    }

    html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-section {
        box-shadow: 0 16px 34px rgba(0, 0, 0, 0.24);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero {
        min-height: 0;
        overflow: hidden;
        padding: 24px 20px 20px;
        background:
            linear-gradient(160deg, color-mix(in srgb, var(--ip-paper) 96%, transparent), color-mix(in srgb, var(--ip-soft) 42%, var(--ip-paper))),
            radial-gradient(circle at 92% 4%, color-mix(in srgb, var(--ip-accent) 15%, transparent), transparent 38%);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero::before {
        top: -100px;
        right: -118px;
        width: 250px;
        height: 250px;
        opacity: 0.72;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero::after {
        left: 20px;
        right: 20px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-kicker {
        margin-bottom: 10px;
        font-size: 11px;
        letter-spacing: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero h1 {
        max-width: none;
        font-size: 30px;
        font-weight: 760;
        line-height: 1.13;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-lead {
        max-width: none;
        margin-top: 14px;
        font-size: 15px;
        line-height: 1.72;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
        margin-top: 20px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-actions .ip-btn {
        width: auto;
        min-height: 42px;
        padding: 0 12px;
        font-size: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-metrics {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
        margin-top: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-metric {
        min-height: 66px;
        padding: 12px 7px;
        text-align: center;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-metric strong {
        font-size: 22px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-metric span {
        margin-top: 7px;
        font-size: 11px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-panel {
        min-height: 0;
        padding: 17px;
        border-radius: 8px;
        background:
            linear-gradient(150deg, color-mix(in srgb, var(--ip-paper) 90%, transparent), color-mix(in srgb, var(--ip-soft-2) 52%, var(--ip-paper))),
            radial-gradient(circle at 90% 0%, color-mix(in srgb, var(--ip-teal) 15%, transparent), transparent 44%);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-panel strong {
        font-size: 22px;
        line-height: 1.18;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-panel p {
        line-height: 1.64;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-topics,
    html.inori-portal-preview:not(.ip-original-view) .ip-chip-list {
        gap: 7px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-topic-pill,
    html.inori-portal-preview:not(.ip-original-view) .ip-chip {
        min-height: 30px;
        padding: 0 10px;
        font-size: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile {
        position: relative;
        display: grid;
        grid-template-columns: 58px minmax(0, 1fr);
        gap: 10px 14px;
        align-items: center;
        padding: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-avatar {
        grid-row: 1 / span 2;
        width: 58px;
        height: 58px;
        border-radius: 8px;
        font-size: 24px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile h2 {
        font-size: 22px;
        line-height: 1.16;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile p {
        font-size: 14px;
        line-height: 1.58;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile dl {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: 1fr;
        gap: 0;
        margin-top: 6px;
        overflow: hidden;
        border: 1px solid var(--ip-line);
        border-radius: 8px;
        background: color-mix(in srgb, var(--ip-paper) 62%, transparent);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile dl div {
        display: flex;
        grid-template-columns: none;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 10px 12px;
        border-top: 1px solid var(--ip-line);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile dl div:first-child {
        border-top: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile dt,
    html.inori-portal-preview:not(.ip-original-view) .ip-profile dd {
        font-size: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile dd {
        text-align: right;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile-links {
        grid-column: 1 / -1;
        gap: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile-links a {
        min-height: 32px;
        padding: 0 10px;
        font-size: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section:not(.ip-hero):not(.ip-profile) {
        padding: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section-head,
    html.inori-portal-preview:not(.ip-original-view) .ip-section-head-tools {
        display: grid;
        grid-template-columns: 1fr;
        align-items: stretch;
        gap: 12px;
        margin-bottom: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section-head h2 {
        font-size: 22px;
        line-height: 1.18;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        width: 100%;
        align-items: stretch;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-search-box,
    html.inori-portal-preview:not(.ip-original-view) .ip-post-count {
        grid-column: 1 / -1;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-academic-search {
        min-height: 42px;
        padding-left: 64px;
        font-size: 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-tool-btn {
        min-height: 40px;
        padding: 0 10px;
        font-size: 13px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-count {
        min-height: 34px;
        justify-content: center;
        font-size: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-grid,
    html.inori-portal-preview:not(.ip-original-view) .ip-archive-list,
    html.inori-portal-preview:not(.ip-original-view) .ip-lab-prompts,
    html.inori-portal-preview:not(.ip-original-view) .ip-lab-components {
        grid-template-columns: 1fr !important;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-grid {
        gap: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-card {
        min-height: 0;
        gap: 10px;
        padding: 17px;
        border-radius: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-card strong {
        font-size: 17px;
        line-height: 1.36;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-card p {
        display: -webkit-box;
        overflow: hidden;
        font-size: 14px;
        line-height: 1.68;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 3;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-terms i {
        min-height: 22px;
        font-size: 11px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-card-foot {
        margin-top: 2px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-archive-list {
        gap: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
        min-height: 48px;
        padding: 0 14px;
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-reader-body {
        max-width: 100%;
        font-size: 15px;
        line-height: 1.82;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-reader-body pre {
        max-width: 100%;
        overflow-x: auto;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-modal-panel {
        width: calc(100vw - 28px);
        padding: 22px;
        border-radius: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-cord {
        right: 12px;
        width: 34px;
        top: 58px;
        height: 78px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-cord span {
        left: 16px;
        top: 0;
        height: 44px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-cord i {
        left: 5px;
        top: 40px;
        width: 22px;
        height: 22px;
    }
}

@media (max-width: 360px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        padding-right: 12px;
        padding-left: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero {
        padding: 22px 18px 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero h1 {
        font-size: 28px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-actions {
        grid-template-columns: 1fr;
    }
}

/* Original article reading assistant. */
.ip-reader-dock {
    position: fixed;
    left: 18px;
    top: 92px;
    z-index: 2147483002;
    display: none;
    width: min(304px, calc(100vw - 36px));
    max-height: calc(100vh - 124px);
    overflow: auto;
    padding: 14px;
    border: 1px solid rgba(255, 184, 214, 0.44);
    border-radius: 12px;
    background:
        radial-gradient(circle at 12% 0%, rgba(255, 195, 221, 0.28), transparent 36%),
        linear-gradient(145deg, rgba(255, 248, 252, 0.92), rgba(255, 229, 239, 0.84));
    color: #6f2b4b;
    box-shadow: 0 18px 46px rgba(63, 35, 51, 0.16);
    backdrop-filter: blur(18px);
    font-family: Inter, "SF Pro Text", "Segoe UI", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;
}

html.ip-original-view.ip-reader-dock-ready .ip-reader-dock {
    display: grid;
    gap: 11px;
}

html.ip-original-view.ip-os-open .ip-reader-dock {
    display: none !important;
}

html.ip-original-view article .post-content,
html.ip-original-view .post-content {
    font-size: calc(1em * var(--ip-reader-scale, 1));
}

html.ip-original-view article .post-content p,
html.ip-original-view article .post-content li {
    line-height: 1.88;
}

.ip-reader-dock-head span,
.ip-reader-dock-link em,
.ip-reader-dock-related span {
    display: block;
    color: rgba(183, 82, 125, 0.78);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.ip-reader-dock-head strong {
    display: block;
    margin-top: 5px;
    color: #63304a;
    font-size: 15px;
    font-weight: 820;
    line-height: 1.36;
}

.ip-reader-dock-head em {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    margin-top: 8px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.44);
    color: rgba(116, 55, 83, 0.74);
    font-size: 11px;
    font-style: normal;
    font-weight: 780;
}

.ip-reader-dock-controls {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 7px;
}

.ip-reader-dock-controls button,
.ip-reader-dock-random {
    min-height: 34px;
    border: 1px solid rgba(184, 91, 131, 0.22);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.46);
    color: #8a3e62;
    font: inherit;
    font-size: 12px;
    font-weight: 860;
    cursor: pointer;
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

.ip-reader-dock-controls button:hover,
.ip-reader-dock-random:hover,
.ip-reader-dock-link:hover,
.ip-reader-dock-related a:hover {
    border-color: rgba(232, 93, 147, 0.48);
    background: rgba(255, 255, 255, 0.66);
    transform: translateY(-1px);
}

.ip-reader-dock-nav,
.ip-reader-dock-related {
    display: grid;
    gap: 7px;
}

.ip-reader-dock-link,
.ip-reader-dock-related a {
    display: block;
    min-width: 0;
    border: 1px solid rgba(184, 91, 131, 0.18);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.34);
    padding: 9px 10px;
    color: #67334d;
    text-decoration: none;
}

.ip-reader-dock-link strong,
.ip-reader-dock-related a {
    display: block;
    margin-top: 3px;
    font-size: 12px;
    font-weight: 760;
    line-height: 1.45;
}

.ip-reader-dock-link.is-disabled {
    opacity: 0.58;
}

.ip-reader-dock-random {
    width: 100%;
    min-height: 38px;
    background: rgba(232, 93, 147, 0.16);
}

.ip-reader-dock-done {
    display: none;
    margin: 0;
    padding: 9px 10px;
    border: 1px solid rgba(111, 142, 132, 0.26);
    border-radius: 8px;
    background: rgba(236, 249, 245, 0.60);
    color: #446f66;
    font-size: 12px;
    font-weight: 820;
    text-align: center;
}

html.ip-reader-complete .ip-reader-dock-done {
    display: block;
}

html.darkmode.ip-original-view .ip-reader-dock,
html.ip-original-view.darkmode .ip-reader-dock {
    border-color: rgba(255, 184, 214, 0.32);
    background:
        radial-gradient(circle at 12% 0%, rgba(255, 150, 198, 0.20), transparent 36%),
        linear-gradient(145deg, rgba(40, 27, 42, 0.92), rgba(62, 34, 52, 0.84));
    color: rgba(255, 243, 249, 0.90);
}

html.darkmode.ip-original-view .ip-reader-dock-head strong,
html.ip-original-view.darkmode .ip-reader-dock-head strong,
html.darkmode.ip-original-view .ip-reader-dock-link,
html.ip-original-view.darkmode .ip-reader-dock-link,
html.darkmode.ip-original-view .ip-reader-dock-related a,
html.ip-original-view.darkmode .ip-reader-dock-related a {
    color: rgba(255, 246, 250, 0.90);
}

html.darkmode.ip-original-view .ip-reader-dock-controls button,
html.ip-original-view.darkmode .ip-reader-dock-controls button,
html.darkmode.ip-original-view .ip-reader-dock-link,
html.ip-original-view.darkmode .ip-reader-dock-link,
html.darkmode.ip-original-view .ip-reader-dock-related a,
html.ip-original-view.darkmode .ip-reader-dock-related a,
html.darkmode.ip-original-view .ip-reader-dock-random,
html.ip-original-view.darkmode .ip-reader-dock-random {
    border-color: rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.075);
    color: rgba(255, 246, 250, 0.84);
}

@media (max-width: 1180px) {
    html.ip-original-view.ip-reader-dock-ready .ip-reader-dock {
        left: 14px;
        top: auto;
        bottom: 18px;
        width: min(320px, calc(100vw - 28px));
        max-height: 46vh;
    }
}

@media (max-width: 740px) {
    html.ip-original-view.ip-reader-dock-ready .ip-reader-dock {
        left: 10px;
        right: 10px;
        top: 70px;
        bottom: auto;
        width: auto;
        max-height: min(390px, calc(100vh - 104px));
        padding: 12px;
    }

    .ip-reader-dock-head strong {
        font-size: 14px;
    }

    .ip-reader-dock-controls {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .ip-reader-dock-related {
        display: none;
    }
}

/* Anime Study OS workstation. Scoped to the unlocked theme only. */
html.ip-original-view .ip-os-panel {
    width: min(620px, calc(100vw - 36px));
    max-height: min(780px, calc(100vh - 92px));
    border-color: rgba(255, 185, 214, 0.42);
    border-radius: 12px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.02)),
        radial-gradient(circle at 18% 0%, rgba(255, 174, 211, 0.24), transparent 34%),
        radial-gradient(circle at 88% 18%, rgba(126, 220, 205, 0.10), transparent 32%),
        linear-gradient(158deg, rgba(29, 20, 32, 0.94), rgba(53, 31, 48, 0.90) 58%, rgba(29, 20, 35, 0.94));
    box-shadow: 0 28px 90px rgba(21, 14, 24, 0.42);
}

html.ip-original-view .ip-os-panel::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(255, 214, 233, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 214, 233, 0.035) 1px, transparent 1px);
    background-size: 26px 26px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.42), transparent 82%);
}

html.ip-original-view .ip-os-head,
html.ip-original-view .ip-os-status,
html.ip-original-view .ip-os-tabs,
html.ip-original-view .ip-os-body {
    position: relative;
    z-index: 1;
}

html.ip-original-view .ip-os-head {
    padding: 20px 20px 13px;
}

html.ip-original-view .ip-os-head strong {
    font-size: 20px;
}

html.ip-original-view .ip-os-head button,
html.ip-original-view .ip-os-status span,
html.ip-original-view .ip-os-status button,
html.ip-original-view .ip-os-tab,
html.ip-original-view .ip-os-command-chips button,
html.ip-original-view .ip-os-hero-console button,
html.ip-original-view .ip-os-graph-head button,
html.ip-original-view .ip-os-reader-head button {
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, color 0.18s ease;
}

html.ip-original-view .ip-os-head button:hover,
html.ip-original-view .ip-os-status button:hover,
html.ip-original-view .ip-os-command-chips button:hover,
html.ip-original-view .ip-os-hero-console button:hover,
html.ip-original-view .ip-os-graph-head button:hover,
html.ip-original-view .ip-os-reader-head button:hover {
    border-color: rgba(255, 204, 226, 0.58);
    background: rgba(232, 93, 147, 0.20);
    transform: translateY(-1px);
}

html.ip-original-view .ip-os-status {
    padding: 13px 20px;
}

html.ip-original-view .ip-os-tabs {
    gap: 8px;
    padding: 0 20px 13px;
    scrollbar-width: thin;
}

html.ip-original-view .ip-os-tab {
    min-height: 33px;
    padding: 0 12px;
    border-radius: 9px;
}

html.ip-original-view .ip-os-tab.is-active {
    box-shadow: 0 8px 20px rgba(232, 93, 147, 0.14);
}

html.ip-original-view .ip-os-body {
    max-height: calc(min(780px, 100vh - 92px) - 162px);
    padding: 2px 20px 20px;
}

html.ip-original-view .ip-os-overview,
html.ip-original-view .ip-os-graph,
html.ip-original-view .ip-os-view {
    min-width: 0;
}

html.ip-original-view .ip-os-overview {
    display: grid;
    gap: 13px;
    margin-top: 10px;
}

html.ip-original-view .ip-os-hero-console,
html.ip-original-view .ip-os-metric,
html.ip-original-view .ip-os-mission-board article,
html.ip-original-view .ip-os-module-grid button,
html.ip-original-view .ip-os-quick-search,
html.ip-original-view .ip-os-latest,
html.ip-original-view .ip-os-graph-head,
html.ip-original-view .ip-os-graph-insights article,
html.ip-original-view .ip-os-lab-head,
html.ip-original-view .ip-os-vault-head,
html.ip-original-view .ip-os-search-head,
html.ip-original-view .ip-os-reader-head {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    background:
        linear-gradient(145deg, rgba(255, 255, 255, 0.092), rgba(255, 255, 255, 0.042)),
        rgba(255, 255, 255, 0.035);
    color: rgba(255, 246, 250, 0.90);
    box-shadow: inset 0 1px rgba(255, 255, 255, 0.06);
}

html.ip-original-view .ip-os-hero-console {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 14px;
    align-items: center;
    min-height: 132px;
    overflow: hidden;
    padding: 18px;
    background:
        radial-gradient(circle at 82% 8%, rgba(255, 195, 221, 0.20), transparent 36%),
        radial-gradient(circle at 10% 90%, rgba(120, 226, 206, 0.12), transparent 32%),
        linear-gradient(145deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.04));
}

html.ip-original-view .ip-os-hero-console p,
html.ip-original-view .ip-os-hero-console span,
html.ip-original-view .ip-os-metric span,
html.ip-original-view .ip-os-metric em,
html.ip-original-view .ip-os-mission-board span,
html.ip-original-view .ip-os-module-grid span,
html.ip-original-view .ip-os-module-grid em,
html.ip-original-view .ip-os-quick-search > span,
html.ip-original-view .ip-os-latest a span,
html.ip-original-view .ip-os-graph-insights span,
html.ip-original-view .ip-os-lab-head p,
html.ip-original-view .ip-os-vault-head p,
html.ip-original-view .ip-os-search-head p,
html.ip-original-view .ip-os-reader-head p {
    color: rgba(255, 219, 235, 0.66);
}

html.ip-original-view .ip-os-hero-console p,
html.ip-original-view .ip-os-metric span,
html.ip-original-view .ip-os-mission-board span,
html.ip-original-view .ip-os-module-grid span,
html.ip-original-view .ip-os-quick-search > span,
html.ip-original-view .ip-os-latest a span,
html.ip-original-view .ip-os-graph-insights span {
    margin: 0;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

html.ip-original-view .ip-os-hero-console strong {
    display: block;
    margin-top: 7px;
    color: #fff;
    font-size: 25px;
    font-weight: 780;
    line-height: 1.15;
}

html.ip-original-view .ip-os-hero-console span {
    display: block;
    margin-top: 9px;
    font-size: 13px;
    line-height: 1.62;
}

html.ip-original-view .ip-os-hero-console button,
html.ip-original-view .ip-os-graph-head button,
html.ip-original-view .ip-os-reader-head button {
    min-height: 38px;
    padding: 0 14px;
    border: 1px solid rgba(255, 205, 226, 0.38);
    border-radius: 999px;
    background: rgba(232, 93, 147, 0.18);
    color: #fff;
    font: inherit;
    font-size: 12px;
    font-weight: 850;
    white-space: nowrap;
    cursor: pointer;
}

html.ip-original-view .ip-os-dashboard {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 9px;
}

html.ip-original-view .ip-os-metric {
    min-height: 92px;
    padding: 13px;
}

html.ip-original-view .ip-os-metric strong {
    display: block;
    margin-top: 9px;
    color: #fff;
    font-size: 27px;
    font-weight: 780;
    line-height: 1;
}

html.ip-original-view .ip-os-metric em {
    display: block;
    margin-top: 8px;
    font-size: 12px;
    font-style: normal;
}

html.ip-original-view .ip-os-mission-board {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
}

html.ip-original-view .ip-os-mission-board article {
    min-height: 118px;
    padding: 14px;
}

html.ip-original-view .ip-os-mission-board strong,
html.ip-original-view .ip-os-latest a strong,
html.ip-original-view .ip-os-graph-insights strong,
html.ip-original-view .ip-os-lab-head strong,
html.ip-original-view .ip-os-vault-head strong,
html.ip-original-view .ip-os-search-head strong,
html.ip-original-view .ip-os-reader-head strong {
    display: block;
    margin-top: 6px;
    color: #fff;
    font-size: 15px;
    line-height: 1.35;
}

html.ip-original-view .ip-os-mission-board p,
html.ip-original-view .ip-os-graph-head p,
html.ip-original-view .ip-os-graph-insights p {
    margin: 8px 0 0;
    color: rgba(255, 246, 250, 0.64);
    font-size: 12px;
    line-height: 1.68;
}

html.ip-original-view .ip-os-module-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
}

html.ip-original-view .ip-os-module-grid button {
    min-height: 112px;
    padding: 12px;
    text-align: left;
    cursor: pointer;
}

html.ip-original-view .ip-os-module-grid button:hover {
    border-color: rgba(255, 194, 221, 0.50);
    background: rgba(232, 93, 147, 0.16);
    transform: translateY(-1px);
}

html.ip-original-view .ip-os-module-grid strong {
    display: block;
    margin-top: 12px;
    color: #fff;
    font-size: 14px;
    line-height: 1.25;
}

html.ip-original-view .ip-os-module-grid em {
    display: block;
    margin-top: 7px;
    font-size: 11px;
    font-style: normal;
    line-height: 1.5;
}

html.ip-original-view .ip-os-quick-search {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    padding: 12px;
}

html.ip-original-view .ip-os-command-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

html.ip-original-view .ip-os-command-chips button {
    min-height: 30px;
    padding: 0 10px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.065);
    color: rgba(255, 246, 250, 0.82);
    font: inherit;
    font-size: 12px;
    font-weight: 760;
    cursor: pointer;
}

html.ip-original-view .ip-os-latest {
    display: grid;
    gap: 8px;
    padding: 13px;
}

html.ip-original-view .ip-os-latest a {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    min-height: 38px;
    color: rgba(255, 246, 250, 0.88);
    text-decoration: none;
}

html.ip-original-view .ip-os-latest a + a {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    padding-top: 8px;
}

html.ip-original-view .ip-os-latest a strong {
    margin-top: 0;
    font-size: 13px;
}

html.ip-original-view .ip-os-graph-head,
html.ip-original-view .ip-os-lab-head,
html.ip-original-view .ip-os-vault-head,
html.ip-original-view .ip-os-search-head,
html.ip-original-view .ip-os-reader-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    margin-top: 10px;
    padding: 14px;
}

html.ip-original-view .ip-os-graph-head strong,
html.ip-original-view .ip-os-lab-head strong,
html.ip-original-view .ip-os-vault-head strong,
html.ip-original-view .ip-os-search-head strong,
html.ip-original-view .ip-os-reader-head strong {
    margin-top: 0;
    font-size: 16px;
}

html.ip-original-view .ip-os-lab-head > span,
html.ip-original-view .ip-os-vault-head > span,
html.ip-original-view .ip-os-search-head > span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 10px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    color: rgba(255, 219, 235, 0.78);
    font-size: 12px;
    font-weight: 820;
    white-space: nowrap;
}

html.ip-original-view .ip-os-graph svg {
    margin-top: 12px;
    border-radius: 10px;
    background:
        radial-gradient(circle at 50% 48%, rgba(255, 187, 218, 0.11), transparent 40%),
        rgba(255, 255, 255, 0.05);
}

html.ip-original-view .ip-os-graph-insights {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-top: 10px;
}

html.ip-original-view .ip-os-graph-insights article {
    min-height: 104px;
    padding: 12px;
}

html.ip-original-view .ip-os-topic-cloud {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

html.ip-original-view .ip-os-topic-cloud button,
html.ip-original-view .ip-os-result,
html.ip-original-view .ip-os-related a,
html.ip-original-view .ip-os-reader-card,
html.ip-original-view .ip-os-toc,
html.ip-original-view .ip-os-vault-card,
html.ip-original-view .ip-os-lab-card {
    border-radius: 10px;
}

html.ip-original-view .ip-os-topic-cloud button:hover,
html.ip-original-view .ip-os-result:hover,
html.ip-original-view .ip-os-related a:hover {
    border-color: rgba(255, 194, 221, 0.46);
    background: rgba(232, 93, 147, 0.14);
}

html.ip-original-view .ip-os-search-head + .ip-os-command-chips {
    margin-top: 11px;
}

html.ip-original-view .ip-os-search {
    border-radius: 10px;
}

html.ip-original-view .ip-os-results {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

html.ip-original-view .ip-os-result {
    min-height: 82px;
}

html.ip-original-view .ip-os-lab-stage {
    min-height: 254px;
    border-radius: 10px;
}

html.ip-original-view .ip-os-lab-panel {
    min-height: 254px;
}

html.ip-original-view .ip-os-lab-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

html.ip-original-view .ip-os-lab-card {
    position: relative;
    min-height: 142px;
    padding-bottom: 42px;
}

html.ip-original-view .ip-os-lab-card b {
    position: absolute;
    left: 13px;
    bottom: 13px;
    display: inline-flex;
    align-items: center;
    min-height: 23px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 219, 235, 0.76);
    font-size: 11px;
    font-weight: 800;
}

html.ip-original-view .ip-os-vault-card {
    padding: 14px;
}

html.ip-original-view .ip-os-vault-card b {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 30px;
    border: 1px solid rgba(255, 219, 235, 0.20);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.07);
}

@media (max-width: 740px) {
    html.ip-original-view .ip-os-trigger {
        right: 12px;
        top: auto;
        bottom: max(76px, env(safe-area-inset-bottom) + 62px);
    }

    html.ip-original-view .ip-os-panel {
        right: 10px;
        top: max(54px, env(safe-area-inset-top) + 12px);
        width: calc(100vw - 20px);
        max-height: calc(100vh - 86px);
    }

    html.ip-original-view .ip-os-head {
        padding: 16px 15px 11px;
    }

    html.ip-original-view .ip-os-status {
        grid-template-columns: 1fr 1fr;
        padding: 10px 15px;
    }

    html.ip-original-view .ip-os-status button {
        grid-column: 1 / -1;
    }

    html.ip-original-view .ip-os-tabs {
        padding: 0 15px 10px;
    }

    html.ip-original-view .ip-os-body {
        max-height: calc(100vh - 238px);
        padding: 2px 15px 16px;
    }

    html.ip-original-view .ip-os-hero-console,
    html.ip-original-view .ip-os-dashboard,
    html.ip-original-view .ip-os-mission-board,
    html.ip-original-view .ip-os-module-grid,
    html.ip-original-view .ip-os-quick-search,
    html.ip-original-view .ip-os-graph-head,
    html.ip-original-view .ip-os-graph-insights,
    html.ip-original-view .ip-os-lab-head,
    html.ip-original-view .ip-os-vault-head,
    html.ip-original-view .ip-os-search-head,
    html.ip-original-view .ip-os-reader-head,
    html.ip-original-view .ip-os-topic-cloud,
    html.ip-original-view .ip-os-results,
    html.ip-original-view .ip-os-lab-grid {
        grid-template-columns: 1fr;
    }

    html.ip-original-view .ip-os-hero-console {
        min-height: 0;
        padding: 15px;
    }

    html.ip-original-view .ip-os-hero-console strong {
        font-size: 22px;
    }

    html.ip-original-view .ip-os-module-grid button,
    html.ip-original-view .ip-os-mission-board article,
    html.ip-original-view .ip-os-metric {
        min-height: 0;
    }

    html.ip-original-view .ip-os-module-grid button {
        display: grid;
        grid-template-columns: 38px minmax(0, 1fr);
        gap: 4px 10px;
        align-items: center;
    }

    html.ip-original-view .ip-os-module-grid strong {
        margin-top: 0;
    }

    html.ip-original-view .ip-os-module-grid em {
        grid-column: 2;
        margin-top: 0;
    }

    html.ip-original-view .ip-os-quick-search {
        gap: 8px;
    }

    html.ip-original-view .ip-os-latest a {
        grid-template-columns: 1fr;
        gap: 3px;
    }

    html.ip-original-view .ip-os-lab-stage,
    html.ip-original-view .ip-os-lab-panel {
        min-height: 220px;
    }
}

/* Unlocked theme cosmetics for Live2D and APlayer. CSS-only so existing widgets keep their behavior. */
html.ip-original-view .aplayer.aplayer-fixed {
    z-index: 99970 !important;
    filter: drop-shadow(0 16px 30px rgba(102, 45, 74, 0.18));
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-body {
    border: 1px solid rgba(255, 188, 210, 0.62);
    border-radius: 0 8px 8px 0;
    background:
        linear-gradient(135deg, rgba(255, 248, 251, 0.92), rgba(255, 230, 239, 0.86)),
        rgba(255, 255, 255, 0.84);
    box-shadow: 0 14px 34px rgba(83, 45, 66, 0.16);
    backdrop-filter: blur(16px);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-miniswitcher {
    border: 1px solid rgba(255, 188, 210, 0.6);
    border-left: 0;
    border-radius: 0 8px 8px 0;
    background: linear-gradient(180deg, rgba(255, 231, 240, 0.96), rgba(255, 249, 252, 0.88));
    box-shadow: 0 10px 24px rgba(83, 45, 66, 0.14);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-pic {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.52);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-info .aplayer-music .aplayer-title {
    color: #6f2847;
    font-weight: 760;
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-info .aplayer-music .aplayer-author,
html.ip-original-view .aplayer.aplayer-fixed .aplayer-list ol li .aplayer-list-author {
    color: #b45b83;
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-list {
    border-top-color: rgba(255, 188, 210, 0.5);
    background: rgba(255, 248, 252, 0.9);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-list ol li {
    border-top-color: rgba(255, 205, 221, 0.46);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-list ol li.aplayer-list-light {
    background: rgba(255, 231, 240, 0.72);
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-lrc:before,
html.ip-original-view .aplayer.aplayer-fixed .aplayer-lrc:after {
    opacity: 0.72;
}

html.ip-original-view .aplayer.aplayer-fixed .aplayer-lrc p {
    color: #8e4264;
    text-shadow: 0 1px 8px rgba(255, 255, 255, 0.8);
}

html.ip-original-view #waifu,
html.ip-original-view #live2d-widget,
html.ip-original-view .live2d-widget {
    z-index: 99960 !important;
    filter: drop-shadow(0 18px 30px rgba(105, 42, 74, 0.2));
}

html.ip-original-view #waifu:hover,
html.ip-original-view #live2d-widget:hover,
html.ip-original-view .live2d-widget:hover {
    filter: drop-shadow(0 20px 34px rgba(105, 42, 74, 0.26));
}

html.ip-original-view #waifu-tips {
    border: 1px solid rgba(255, 188, 210, 0.68) !important;
    border-radius: 8px !important;
    background:
        linear-gradient(135deg, rgba(255, 248, 252, 0.94), rgba(255, 231, 240, 0.9)) !important;
    box-shadow: 0 12px 30px rgba(92, 40, 68, 0.16) !important;
    color: #783252 !important;
    backdrop-filter: blur(14px);
}

html.ip-original-view #waifu-tool {
    border-radius: 8px !important;
}

html.ip-original-view #waifu-tool span,
html.ip-original-view #waifu-tool .fa {
    color: #d85f91 !important;
    text-shadow: 0 4px 12px rgba(255, 168, 202, 0.34);
}

html.ip-original-view #waifu-toggle {
    border: 1px solid rgba(255, 188, 210, 0.66) !important;
    border-left: 0 !important;
    border-radius: 0 8px 8px 0 !important;
    background: linear-gradient(180deg, rgba(255, 231, 240, 0.94), rgba(255, 248, 252, 0.88)) !important;
    box-shadow: 0 10px 24px rgba(92, 40, 68, 0.14) !important;
    color: #b94d7b !important;
    backdrop-filter: blur(12px);
}

@media (max-width: 740px) {
    html.ip-original-view .aplayer.aplayer-fixed .aplayer-body {
        max-width: calc(100vw - 76px);
    }

    html.ip-original-view #waifu-tips {
        max-width: min(260px, calc(100vw - 32px)) !important;
    }
}

/* Premium clean academic homepage. Scoped away from the unlocked original theme. */
html.inori-portal-preview:not(.ip-original-view) {
    --ip-ink: #202029;
    --ip-text: #3e3d48;
    --ip-muted: #706c78;
    --ip-faint: #9a949f;
    --ip-line: rgba(42, 39, 50, 0.105);
    --ip-line-strong: rgba(42, 39, 50, 0.18);
    --ip-paper: #ffffff;
    --ip-bg: #fbfafc;
    --ip-soft: #fff4f8;
    --ip-soft-2: #eef7f4;
    --ip-accent: #d95687;
    --ip-teal: #4f877f;
    --ip-gold: #9b7536;
    --ip-radius: 8px;
    --ip-shadow: 0 24px 70px rgba(31, 28, 38, 0.075);
    --ip-shadow-soft: 0 12px 34px rgba(31, 28, 38, 0.055);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) {
    --ip-ink: #f5f1f6;
    --ip-text: #ded8e2;
    --ip-muted: #b8afbd;
    --ip-faint: #918894;
    --ip-line: rgba(255, 255, 255, 0.12);
    --ip-line-strong: rgba(255, 255, 255, 0.22);
    --ip-paper: #1c1a22;
    --ip-bg: #131219;
    --ip-soft: #2a2029;
    --ip-soft-2: #182624;
    --ip-shadow: 0 24px 72px rgba(0, 0, 0, 0.34);
    --ip-shadow-soft: 0 14px 36px rgba(0, 0, 0, 0.27);
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell {
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 82%, transparent), transparent 320px),
        linear-gradient(90deg, color-mix(in srgb, var(--ip-accent) 5%, transparent), transparent 34%, color-mix(in srgb, var(--ip-teal) 5%, transparent)),
        var(--ip-bg);
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell::before {
    opacity: 0.8;
    background-size: 32px 32px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.46), transparent 72%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    min-height: 68px;
    padding: 12px max(28px, calc((100vw - 1340px) / 2));
    border-bottom-color: color-mix(in srgb, var(--ip-line) 72%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-brand {
    gap: 12px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-logo {
    width: 38px;
    height: 38px;
    border-radius: 8px;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--ip-paper) 78%, var(--ip-soft)), color-mix(in srgb, var(--ip-soft-2) 54%, var(--ip-paper)));
    font-family: "SF Pro Display", "Segoe UI", sans-serif;
    font-size: 17px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-main {
    width: min(1340px, calc(100vw - 36px));
    margin: 32px auto 86px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-academic-wrap {
    gap: 24px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-section {
    border-color: var(--ip-line);
    border-radius: 8px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 98%, transparent), color-mix(in srgb, var(--ip-paper) 94%, var(--ip-bg)));
    box-shadow: var(--ip-shadow);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero {
    min-height: 378px;
    padding: clamp(38px, 4.2vw, 58px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero::before {
    opacity: 0.62;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-grid {
    grid-template-columns: minmax(0, 1.55fr) minmax(310px, 0.7fr);
    gap: clamp(28px, 4vw, 52px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero h1 {
    max-width: 920px;
    font-size: clamp(44px, 5.4vw, 74px);
    font-weight: 760;
    line-height: 1.02;
}

html.inori-portal-preview:not(.ip-original-view) .ip-lead {
    max-width: 800px;
    color: var(--ip-muted);
    font-size: 16.5px;
    line-height: 1.86;
}

html.inori-portal-preview:not(.ip-original-view) .ip-actions {
    gap: 11px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-btn {
    min-height: 42px;
    padding: 0 17px;
    border-radius: 8px;
    box-shadow: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-btn-primary {
    background: linear-gradient(135deg, var(--ip-accent), color-mix(in srgb, var(--ip-accent) 78%, #7b4766));
}

html.inori-portal-preview:not(.ip-original-view) .ip-metrics {
    max-width: 680px;
    gap: 12px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-metric {
    min-height: 84px;
    padding: 16px;
    border-radius: 8px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 92%, transparent), color-mix(in srgb, var(--ip-soft) 26%, var(--ip-paper)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-panel {
    min-height: 270px;
    padding: 27px;
    border-radius: 8px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-panel strong {
    font-size: 27px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-layout {
    grid-template-columns: minmax(286px, 318px) minmax(0, 1fr);
    gap: 24px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile {
    top: 90px;
    padding: 27px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile::after {
    content: "";
    display: block;
    height: 1px;
    margin-top: 2px;
    background: linear-gradient(90deg, var(--ip-accent), transparent);
    opacity: 0.34;
}

html.inori-portal-preview:not(.ip-original-view) .ip-avatar {
    width: 92px;
    height: 92px;
    border-radius: 8px;
    font-size: 35px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile h2 {
    font-size: 26px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile dl {
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--ip-bg) 44%, var(--ip-paper));
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile dl div {
    padding: 13px 14px;
    border-top: 1px solid var(--ip-line);
}

html.inori-portal-preview:not(.ip-original-view) .ip-profile dl div:first-child {
    border-top: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-content {
    gap: 22px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-section:not(.ip-hero):not(.ip-profile) {
    padding: 29px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-section-head {
    margin-bottom: 21px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-section-head h2 {
    font-size: 26px;
    font-weight: 735;
}

html.inori-portal-preview:not(.ip-original-view) .ip-academic-overview {
    padding: 29px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-overview-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 15px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
    min-width: 0;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 96%, transparent), color-mix(in srgb, var(--ip-bg) 64%, var(--ip-paper)));
    box-shadow: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card {
    display: grid;
    align-content: start;
    gap: 11px;
    min-height: 238px;
    padding: 21px;
    color: var(--ip-text);
    text-decoration: none;
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 54%, var(--ip-line));
    box-shadow: var(--ip-shadow-soft);
    transform: translateY(-2px);
    text-decoration: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card span,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card > span {
    color: var(--ip-accent);
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card strong {
    color: var(--ip-ink);
    font-size: 22px;
    font-weight: 760;
    line-height: 1.26;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card p {
    margin: 0;
    color: var(--ip-muted);
    font-size: 14px;
    line-height: 1.74;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card b {
    align-self: end;
    color: var(--ip-accent);
    font-size: 12px;
    font-weight: 860;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-terms,
html.inori-portal-preview:not(.ip-original-view) .ip-post-terms {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    font-style: normal;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-terms i {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-soft-2) 70%, transparent);
    color: var(--ip-muted);
    font-size: 11px;
    font-style: normal;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
    display: grid;
    gap: 13px;
    min-height: 238px;
    padding: 20px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-index-card-wide {
    grid-column: span 2;
    min-height: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-list,
html.inori-portal-preview:not(.ip-original-view) .ip-mini-list,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-list {
    display: grid;
    gap: 8px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row,
html.inori-portal-preview:not(.ip-original-view) .ip-mini-note,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row {
    min-width: 0;
    border: 1px solid var(--ip-line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--ip-paper) 74%, transparent);
    color: var(--ip-text);
    font: inherit;
    text-align: left;
    text-decoration: none;
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row {
    display: grid;
    grid-template-columns: minmax(86px, 0.8fr) minmax(0, 1.3fr);
    gap: 10px;
    align-items: center;
    min-height: 50px;
    padding: 10px 12px;
    cursor: pointer;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-mini-note:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 48%, var(--ip-line));
    background: color-mix(in srgb, var(--ip-soft) 36%, var(--ip-paper));
    transform: translateY(-1px);
    text-decoration: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row span,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row span {
    display: grid;
    gap: 3px;
    min-width: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row strong,
html.inori-portal-preview:not(.ip-original-view) .ip-mini-note strong,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row strong {
    overflow: hidden;
    color: var(--ip-ink);
    font-size: 13px;
    font-weight: 820;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row em,
html.inori-portal-preview:not(.ip-original-view) .ip-mini-note span,
html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row em {
    color: var(--ip-faint);
    font-size: 11px;
    font-style: normal;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-focus-row b {
    overflow: hidden;
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 650;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.inori-portal-preview:not(.ip-original-view) .ip-mini-note {
    display: grid;
    grid-template-columns: 82px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    min-height: 42px;
    padding: 9px 11px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row {
    display: grid;
    grid-template-columns: minmax(104px, 0.8fr) minmax(0, 1.4fr);
    gap: 14px;
    align-items: center;
    min-height: 47px;
    padding: 10px 12px;
    cursor: pointer;
}

html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row i {
    position: relative;
    display: block;
    height: 8px;
    overflow: hidden;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-line) 72%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row i::before {
    content: "";
    display: block;
    width: var(--level);
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--ip-accent), color-mix(in srgb, var(--ip-teal) 72%, var(--ip-accent)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
    grid-template-columns: minmax(230px, 1fr) auto auto auto auto;
    width: min(650px, 100%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-grid {
    gap: 16px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card {
    min-height: 214px;
    padding: 20px;
    border-radius: 8px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 96%, transparent), color-mix(in srgb, var(--ip-bg) 66%, var(--ip-paper)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-meta b,
html.inori-portal-preview:not(.ip-original-view) .ip-post-meta em {
    overflow: hidden;
    font-style: normal;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-meta b {
    color: var(--ip-accent);
    max-width: 62%;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card strong {
    font-size: 18px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-chip-list {
    gap: 9px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-chip,
html.inori-portal-preview:not(.ip-original-view) .ip-topic-pill,
html.inori-portal-preview:not(.ip-original-view) .ip-profile-links a,
html.inori-portal-preview:not(.ip-original-view) .ip-tool-btn,
html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    border-radius: 8px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-chip,
html.inori-portal-preview:not(.ip-original-view) .ip-topic-pill,
html.inori-portal-preview:not(.ip-original-view) .ip-profile-links a {
    min-height: 34px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-reader {
    box-shadow: var(--ip-shadow);
}

html.inori-portal-preview:not(.ip-original-view) .ip-reader-body {
    max-width: 830px;
    margin: 0 auto;
    font-size: 16.5px;
    line-height: 1.86;
}

@media (max-width: 1120px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-overview-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-index-card-wide {
        grid-column: span 2;
    }
}

@media (max-width: 980px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        width: min(100%, calc(100vw - 28px));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-layout,
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-grid {
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile {
        position: relative;
        top: auto;
    }
}

@media (max-width: 740px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
        position: sticky;
        padding: 10px 14px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-nav {
        display: grid;
        grid-template-columns: auto auto minmax(0, 1fr);
        width: 100%;
        gap: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-status {
        justify-self: end;
        max-width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        width: 100%;
        margin: 15px auto 62px;
        padding: 0 14px max(52px, env(safe-area-inset-bottom));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-academic-wrap,
    html.inori-portal-preview:not(.ip-original-view) .ip-content {
        gap: 15px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero {
        min-height: 0;
        padding: 25px 20px 21px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero h1 {
        font-size: 32px;
        line-height: 1.12;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-lead {
        font-size: 15px;
        line-height: 1.74;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-actions {
        grid-template-columns: 1fr 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-metrics,
    html.inori-portal-preview:not(.ip-original-view) .ip-overview-grid {
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-index-card-wide {
        grid-column: auto;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
    html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
        min-height: 0;
        padding: 17px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-feature-card strong {
        font-size: 20px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-profile {
        grid-template-columns: 60px minmax(0, 1fr);
        padding: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-avatar {
        width: 60px;
        height: 60px;
        font-size: 24px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section:not(.ip-hero):not(.ip-profile),
    html.inori-portal-preview:not(.ip-original-view) .ip-academic-overview {
        padding: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-section-head h2 {
        font-size: 22px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-search-box,
    html.inori-portal-preview:not(.ip-original-view) .ip-post-count {
        grid-column: 1 / -1;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-grid,
    html.inori-portal-preview:not(.ip-original-view) .ip-archive-list {
        grid-template-columns: 1fr !important;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-card {
        min-height: 0;
        padding: 17px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-focus-row,
    html.inori-portal-preview:not(.ip-original-view) .ip-mini-note,
    html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row {
        grid-template-columns: 1fr;
        gap: 6px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-timeline-row i {
        height: 7px;
    }
}

@media (max-width: 380px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-hero h1 {
        font-size: 29px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-actions,
    html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
        grid-template-columns: 1fr;
    }
}

/* Apple-like clean finish: fewer panels, richer material, calmer spacing. */
html.inori-portal-preview:not(.ip-original-view) {
    --ip-ink: #1d1d1f;
    --ip-text: #2d2d31;
    --ip-muted: #6e6e73;
    --ip-faint: #9a9aa0;
    --ip-line: rgba(29, 29, 31, 0.10);
    --ip-line-strong: rgba(29, 29, 31, 0.18);
    --ip-paper: #ffffff;
    --ip-bg: #f5f5f7;
    --ip-soft: #fbf2f6;
    --ip-soft-2: #eef6f4;
    --ip-accent: #d64d82;
    --ip-teal: #497f78;
    --ip-shadow: 0 22px 70px rgba(0, 0, 0, 0.075);
    --ip-shadow-soft: 0 12px 34px rgba(0, 0, 0, 0.055);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) {
    --ip-ink: #f5f5f7;
    --ip-text: #e8e8ed;
    --ip-muted: #a1a1a6;
    --ip-faint: #737378;
    --ip-line: rgba(255, 255, 255, 0.11);
    --ip-line-strong: rgba(255, 255, 255, 0.18);
    --ip-paper: #1d1d20;
    --ip-bg: #060607;
    --ip-soft: #211820;
    --ip-soft-2: #162221;
    --ip-shadow: 0 26px 80px rgba(0, 0, 0, 0.42);
    --ip-shadow-soft: 0 14px 42px rgba(0, 0, 0, 0.32);
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell {
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 62%, transparent), transparent 440px),
        linear-gradient(180deg, var(--ip-bg), color-mix(in srgb, var(--ip-bg) 94%, var(--ip-soft-2)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell::before {
    opacity: 0.45;
    background-image:
        linear-gradient(rgba(120, 120, 128, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(120, 120, 128, 0.03) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.34), transparent 64%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    min-height: 54px;
    padding: 8px max(22px, calc((100vw - 1180px) / 2));
    border-bottom: 1px solid color-mix(in srgb, var(--ip-line) 62%, transparent);
    background: color-mix(in srgb, var(--ip-paper) 72%, transparent);
    box-shadow: none;
    backdrop-filter: blur(22px) saturate(160%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-logo {
    width: 30px;
    height: 30px;
    border-color: color-mix(in srgb, var(--ip-line) 80%, transparent);
    background: color-mix(in srgb, var(--ip-paper) 86%, transparent);
    box-shadow: none;
    font-size: 14px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-brand strong {
    font-size: 13px;
    font-weight: 780;
}

html.inori-portal-preview:not(.ip-original-view) .ip-brand em,
html.inori-portal-preview:not(.ip-original-view) .ip-nav a,
html.inori-portal-preview:not(.ip-original-view) .ip-status {
    font-size: 12px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-status {
    min-height: 28px;
    background: color-mix(in srgb, var(--ip-paper) 58%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-main {
    width: min(1180px, calc(100vw - 44px));
    margin: 0 auto 96px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-wrap {
    gap: clamp(34px, 5vw, 66px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-wrap > .ip-section {
    border: 0;
    background: transparent;
    box-shadow: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home {
    display: grid;
    place-items: center;
    min-height: min(760px, calc(100svh - 74px));
    overflow: hidden;
    padding: clamp(72px, 10vw, 132px) clamp(18px, 4vw, 54px) clamp(54px, 7vw, 90px);
    text-align: center;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home::before {
    right: auto;
    top: auto;
    left: 50%;
    bottom: 8%;
    width: min(840px, 84vw);
    height: 1px;
    border: 0;
    border-radius: 0;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--ip-accent) 36%, transparent), color-mix(in srgb, var(--ip-teal) 24%, transparent), transparent);
    opacity: 0.7;
    transform: translateX(-50%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home::after {
    left: 50%;
    right: auto;
    bottom: 0;
    width: min(980px, 92vw);
    height: 1px;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--ip-line-strong) 74%, transparent), transparent);
    transform: translateX(-50%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy {
    display: grid;
    justify-items: center;
    max-width: 1020px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-kicker {
    margin-bottom: 18px;
    color: var(--ip-muted);
    font-size: 13px;
    font-weight: 760;
    text-transform: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1 {
    max-width: 980px;
    color: var(--ip-ink);
    font-family: "SF Pro Display", "Segoe UI", "HarmonyOS Sans SC", "Microsoft YaHei", sans-serif;
    font-size: clamp(52px, 8.3vw, 108px);
    font-weight: 760;
    line-height: 0.98;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-lead {
    max-width: 720px;
    margin-top: 26px;
    color: var(--ip-muted);
    font-size: clamp(18px, 2vw, 23px);
    line-height: 1.58;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-actions {
    justify-content: center;
    margin-top: 32px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn {
    min-height: 42px;
    padding: 0 19px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 720;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn:not(.ip-btn-primary) {
    border-color: transparent;
    background: transparent;
    color: var(--ip-accent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn-primary {
    border-color: transparent;
    background: #1d1d1f;
    color: #fff;
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn-primary {
    background: #f5f5f7;
    color: #111113;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
    width: min(620px, 100%);
    margin-top: 42px;
    border-top: 1px solid var(--ip-line);
    border-bottom: 1px solid var(--ip-line);
    background: transparent;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric {
    min-height: 86px;
    padding: 20px 14px;
    border: 0;
    border-left: 1px solid var(--ip-line);
    border-radius: 0;
    background: transparent;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric:first-child {
    border-left: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric strong {
    font-size: 28px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric span {
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 680;
}

html.inori-portal-preview:not(.ip-original-view) .ip-academic-overview,
html.inori-portal-preview:not(.ip-original-view) .ip-home-posts,
html.inori-portal-preview:not(.ip-original-view) .ip-home-archive,
html.inori-portal-preview:not(.ip-original-view) .ip-topic-strip {
    width: min(1120px, 100%);
    margin: 0 auto;
    padding: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-wrap .ip-section-head {
    margin-bottom: 22px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-wrap .ip-section-head h2 {
    font-size: clamp(30px, 4.3vw, 54px);
    font-weight: 740;
    line-height: 1.04;
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-wrap .ip-kicker {
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 760;
    text-transform: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-overview-grid {
    grid-template-columns: minmax(0, 1.28fr) minmax(320px, 0.72fr);
    gap: 18px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    border: 1px solid color-mix(in srgb, var(--ip-line) 72%, transparent);
    border-radius: 8px;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 94%, transparent), color-mix(in srgb, var(--ip-paper) 78%, var(--ip-bg)));
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.52) inset, var(--ip-shadow-soft);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-index-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06) inset, var(--ip-shadow-soft);
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card {
    min-height: 360px;
    padding: clamp(30px, 4vw, 46px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card span,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card > span {
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 760;
    text-transform: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card strong {
    max-width: 680px;
    font-size: clamp(30px, 4.2vw, 48px);
    font-weight: 740;
    line-height: 1.08;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card p {
    max-width: 620px;
    font-size: 16px;
    line-height: 1.7;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card b,
html.inori-portal-preview:not(.ip-original-view) .ip-card-foot b {
    color: var(--ip-accent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
    min-height: 360px;
    padding: clamp(24px, 3vw, 34px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-mini-list {
    gap: 0;
    overflow: hidden;
    border-top: 1px solid var(--ip-line);
}

html.inori-portal-preview:not(.ip-original-view) .ip-mini-note {
    min-height: 58px;
    padding: 13px 0;
    border: 0;
    border-bottom: 1px solid var(--ip-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-mini-note:hover {
    background: transparent;
    transform: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-mini-note strong {
    font-size: 14px;
    font-weight: 720;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
    grid-template-columns: minmax(260px, 1fr) auto auto auto auto;
    width: min(720px, 100%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-academic-search,
html.inori-portal-preview:not(.ip-original-view) .ip-tool-btn,
html.inori-portal-preview:not(.ip-original-view) .ip-post-count {
    min-height: 40px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-paper) 70%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card {
    min-height: 258px;
    padding: 24px;
    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 34%, var(--ip-line));
    box-shadow: 0 24px 62px rgba(0, 0, 0, 0.10);
    transform: translateY(-4px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card strong {
    font-size: 20px;
    line-height: 1.24;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card p {
    font-size: 14px;
    line-height: 1.72;
}

html.inori-portal-preview:not(.ip-original-view) .ip-topic-strip {
    display: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-home-archive {
    padding-bottom: 18px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-index {
    position: relative;
    width: min(1120px, 100%);
    margin: 0 auto;
    padding: clamp(28px, 4vw, 44px);
    overflow: hidden;
    border-color: color-mix(in srgb, var(--ip-line) 78%, transparent);
    background:
        radial-gradient(circle at 14% 10%, color-mix(in srgb, var(--ip-accent) 10%, transparent), transparent 26%),
        radial-gradient(circle at 88% 18%, color-mix(in srgb, var(--ip-green) 10%, transparent), transparent 28%),
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 96%, transparent), color-mix(in srgb, var(--ip-bg) 72%, var(--ip-paper)));
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.58) inset, 0 28px 86px rgba(27, 25, 31, 0.08);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-index {
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.07) inset, 0 28px 86px rgba(0, 0, 0, 0.34);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.22fr) minmax(300px, 0.78fr);
    gap: 16px;
    align-items: stretch;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel {
    min-width: 0;
    border: 1px solid color-mix(in srgb, var(--ip-line) 78%, transparent);
    border-radius: 8px;
    background: color-mix(in srgb, var(--ip-paper) 74%, transparent);
    backdrop-filter: blur(16px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel {
    display: grid;
    grid-column: span 1;
    grid-row: span 2;
    grid-template-columns: minmax(210px, 0.7fr) minmax(320px, 1.3fr);
    gap: clamp(18px, 3vw, 34px);
    align-items: center;
    min-height: 460px;
    padding: clamp(24px, 3.4vw, 38px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-panel {
    display: grid;
    align-content: start;
    gap: 17px;
    padding: 24px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel span,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel > span {
    color: var(--ip-muted);
    font-size: 12px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel strong,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel > strong {
    display: block;
    margin-top: 10px;
    color: var(--ip-ink);
    font-size: clamp(24px, 2.5vw, 34px);
    font-weight: 740;
    line-height: 1.08;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel p {
    max-width: 330px;
    margin: 15px 0 0;
    color: var(--ip-muted);
    font-size: 15px;
    line-height: 1.68;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit {
    position: relative;
    min-height: 360px;
    border-radius: 8px;
    background:
        linear-gradient(90deg, color-mix(in srgb, var(--ip-line) 34%, transparent) 1px, transparent 1px),
        linear-gradient(0deg, color-mix(in srgb, var(--ip-line) 34%, transparent) 1px, transparent 1px),
        radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--ip-accent) 9%, transparent), transparent 48%);
    background-size: 42px 42px, 42px 42px, auto;
    overflow: hidden;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit line {
    stroke: color-mix(in srgb, var(--ip-line-strong) 72%, transparent);
    stroke-width: 0.5;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-core,
html.inori-portal-preview:not(.ip-original-view) .ip-research-node {
    position: absolute;
    display: grid;
    place-items: center;
    text-align: center;
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 80%, transparent);
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-paper) 88%, transparent);
    box-shadow: 0 16px 42px rgba(31, 29, 36, 0.10);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-core,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-node {
    box-shadow: 0 16px 42px rgba(0, 0, 0, 0.24);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-core {
    left: 50%;
    top: 50%;
    width: 112px;
    height: 112px;
    transform: translate(-50%, -50%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-core strong {
    margin: 0;
    color: var(--ip-ink);
    font-size: 15px;
    font-weight: 780;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-core span {
    color: var(--ip-accent);
    font-size: 26px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-node {
    left: var(--x);
    top: var(--y);
    width: var(--size);
    height: var(--size);
    padding: 9px;
    color: var(--ip-ink);
    font: inherit;
    cursor: pointer;
    transform: translate(-50%, -50%);
    transition: transform 0.22s ease, border-color 0.22s ease, background 0.22s ease;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-node:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 45%, var(--ip-line));
    background: color-mix(in srgb, var(--ip-paper) 96%, var(--ip-soft));
    transform: translate(-50%, -50%) scale(1.045);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-node strong {
    margin: 0;
    max-width: 100%;
    font-size: 12px;
    font-weight: 760;
    line-height: 1.15;
    overflow-wrap: anywhere;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-node span {
    color: var(--ip-muted);
    font-size: 11px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-threads {
    display: grid;
    gap: 13px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread {
    display: grid;
    gap: 10px;
    padding-top: 13px;
    border-top: 1px solid var(--ip-line);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread:first-child {
    padding-top: 0;
    border-top: 0;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread button,
html.inori-portal-preview:not(.ip-original-view) .ip-research-month {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-width: 0;
    border: 0;
    background: transparent;
    color: var(--ip-ink);
    font: inherit;
    cursor: pointer;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread button span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 15px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread button b,
html.inori-portal-preview:not(.ip-original-view) .ip-research-month b {
    color: var(--ip-accent);
    font-size: 13px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread div {
    display: grid;
    gap: 7px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread a,
html.inori-portal-preview:not(.ip-original-view) .ip-research-thread em {
    color: var(--ip-muted);
    font-size: 13px;
    line-height: 1.35;
    text-decoration: none;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-thread a:hover {
    color: var(--ip-accent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-cadence {
    display: grid;
    gap: 12px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-month {
    display: grid;
    grid-template-columns: 82px minmax(0, 1fr) 28px;
    gap: 12px;
    text-align: left;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-month span {
    color: var(--ip-muted);
    font-size: 13px;
    font-weight: 720;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-month i {
    align-self: center;
    height: 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ip-line-strong) 48%, transparent);
    overflow: hidden;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-month i::before {
    display: block;
    width: var(--level);
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--ip-accent), color-mix(in srgb, var(--ip-green) 74%, var(--ip-accent)));
    content: "";
}

html.inori-portal-preview:not(.ip-original-view) .ip-archive-list {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    min-height: 72px;
    padding: 0 18px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-reader {
    border: 0;
    background: var(--ip-paper);
}

@media (max-width: 1120px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-post-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-archive-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 820px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        width: 100%;
        padding: 0 16px max(56px, env(safe-area-inset-bottom));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-overview-grid,
    html.inori-portal-preview:not(.ip-original-view) .ip-post-grid,
    html.inori-portal-preview:not(.ip-original-view) .ip-archive-list,
    html.inori-portal-preview:not(.ip-original-view) .ip-research-grid,
    html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel {
        grid-template-columns: 1fr !important;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home {
        min-height: auto;
        padding: 64px 4px 54px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1 {
        font-size: clamp(42px, 13vw, 64px);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-lead {
        font-size: 17px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
    html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
        min-height: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel {
        min-height: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit {
        min-height: 330px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 460px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
        padding: 9px 13px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-nav {
        grid-template-columns: auto auto;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-status {
        display: none;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-actions,
    html.inori-portal-preview:not(.ip-original-view) .ip-post-tools {
        grid-template-columns: 1fr;
        width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn {
        width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric {
        border-left: 0;
        border-top: 1px solid var(--ip-line);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric:first-child {
        border-top: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-index {
        padding: 22px 16px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel,
    html.inori-portal-preview:not(.ip-original-view) .ip-research-panel {
        padding: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit {
        min-height: 286px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-core {
        width: 88px;
        height: 88px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-node {
        width: 72px;
        height: 72px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-research-month {
        grid-template-columns: 72px minmax(0, 1fr) 24px;
        gap: 9px;
    }
}

/* Premium motion layer: quiet reveal, material depth, no visual noise. */
html.inori-portal-preview:not(.ip-original-view) .ip-shell {
    isolation: isolate;
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell::after {
    position: fixed;
    inset: -22vh -18vw auto;
    z-index: -1;
    height: 68vh;
    pointer-events: none;
    background:
        radial-gradient(circle at 48% 30%, color-mix(in srgb, var(--ip-accent) 13%, transparent), transparent 32%),
        radial-gradient(circle at 68% 42%, color-mix(in srgb, var(--ip-teal) 11%, transparent), transparent 34%);
    filter: blur(28px);
    opacity: 0.58;
    transform: translate3d(calc(var(--ip-parallax-x) * 0.42), calc(var(--ip-parallax-y) * 0.36), 0);
    animation: ipPremiumAmbient 18s ease-in-out infinite alternate;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view) .ip-main {
    position: relative;
    z-index: 1;
}

html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    transition: background-color 0.24s ease, box-shadow 0.24s ease, border-color 0.24s ease;
}

html.ip-shell-scrolled.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    border-color: color-mix(in srgb, var(--ip-line-strong) 82%, transparent);
    background: color-mix(in srgb, var(--ip-paper) 86%, transparent);
    box-shadow: 0 14px 38px rgba(0, 0, 0, 0.055);
}

html.ip-academic-dark.ip-shell-scrolled.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    box-shadow: 0 14px 38px rgba(0, 0, 0, 0.28);
}

html.inori-portal-preview:not(.ip-original-view) .ip-brand,
html.inori-portal-preview:not(.ip-original-view) .ip-nav a,
html.inori-portal-preview:not(.ip-original-view) .ip-btn,
html.inori-portal-preview:not(.ip-original-view) .ip-tool-btn,
html.inori-portal-preview:not(.ip-original-view) .ip-research-thread button,
html.inori-portal-preview:not(.ip-original-view) .ip-research-month {
    transition: color 0.2s ease, opacity 0.2s ease, transform 0.2s ease;
}

html.inori-portal-preview:not(.ip-original-view) .ip-nav a:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-brand:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-research-thread button:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-research-month:hover {
    transform: translateY(-1px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home::before {
    background-size: 220% 100%;
    animation: ipPremiumLine 11s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel,
html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    position: relative;
    overflow: hidden;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card::before,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card::before,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card::before,
html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel::before,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel::before {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(120deg, rgba(255, 255, 255, 0.16), transparent 26%, transparent 70%, rgba(255, 255, 255, 0.08)),
        radial-gradient(circle at 18% 0%, color-mix(in srgb, var(--ip-accent) 8%, transparent), transparent 34%);
    opacity: 0.54;
    content: "";
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-feature-card::before,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-index-card::before,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-post-card::before,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel::before,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-panel::before {
    opacity: 0.22;
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card > *,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card > *,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card > *,
html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel > *,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel > * {
    position: relative;
    z-index: 1;
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card {
    transform: translateY(0);
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel:hover,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel:hover {
    border-color: color-mix(in srgb, var(--ip-accent) 24%, var(--ip-line));
    box-shadow: 0 26px 70px rgba(0, 0, 0, 0.09);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-feature-card:hover,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-index-card:hover,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel:hover,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-research-panel:hover {
    box-shadow: 0 26px 74px rgba(0, 0, 0, 0.36);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit {
    background-position:
        calc(50% + var(--ip-parallax-x) * 0.12) calc(50% + var(--ip-parallax-y) * 0.12),
        calc(50% + var(--ip-parallax-x) * -0.08) calc(50% + var(--ip-parallax-y) * -0.08),
        center;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-core {
    animation: ipPremiumPulse 7s ease-in-out infinite;
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-node {
    animation: ipPremiumNode 8s ease-in-out infinite;
    animation-delay: var(--ip-reveal-delay, 0ms);
}

html.inori-portal-preview:not(.ip-original-view) .ip-reveal {
    opacity: 0;
    transform: translate3d(0, 18px, 0);
    transition: opacity 0.62s ease, transform 0.62s cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: var(--ip-reveal-delay, 0ms);
}

html.inori-portal-preview:not(.ip-original-view) .ip-reveal.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card.ip-reveal.is-visible:hover {
    transform: translateY(-4px);
}

@media (max-width: 680px) {
    .ip-modal-panel {
        width: calc(100vw - 28px);
        max-height: calc(100vh - 34px);
        padding: 22px;
    }

    .ip-admin-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .ip-admin-head .ip-btn,
    .ip-admin-login .ip-btn {
        width: 100%;
    }

    .ip-editor-grid {
        grid-template-columns: 1fr;
    }

    .ip-editor-actions {
        display: grid;
        grid-template-columns: 1fr;
    }
}

@keyframes ipPremiumAmbient {
    0% {
        opacity: 0.42;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.38), calc(var(--ip-parallax-y) * 0.32), 0) scale(1);
    }
    100% {
        opacity: 0.64;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.46 + 18px), calc(var(--ip-parallax-y) * 0.38 + 10px), 0) scale(1.04);
    }
}

@keyframes ipPremiumLine {
    0% { background-position: 0% 50%; opacity: 0.44; }
    100% { background-position: 100% 50%; opacity: 0.82; }
}

@keyframes ipPremiumPulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50% { transform: translate(-50%, -50%) scale(1.025); }
}

@keyframes ipPremiumNode {
    0%, 100% { box-shadow: 0 16px 42px rgba(31, 29, 36, 0.10); }
    50% { box-shadow: 0 18px 48px color-mix(in srgb, var(--ip-accent) 12%, rgba(31, 29, 36, 0.10)); }
}

@media (prefers-reduced-motion: reduce) {
    html.inori-portal-preview:not(.ip-original-view) .ip-shell::after,
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home::before,
    html.inori-portal-preview:not(.ip-original-view) .ip-research-core,
    html.inori-portal-preview:not(.ip-original-view) .ip-research-node {
        animation: none !important;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-reveal,
    html.inori-portal-preview:not(.ip-original-view) .ip-reveal.is-visible {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* Clean art polish: restrained line halos, glass highlights, and quieter premium depth. */
html.inori-portal-preview:not(.ip-original-view) {
    --ip-halo-rose: color-mix(in srgb, var(--ip-accent) 34%, transparent);
    --ip-halo-teal: color-mix(in srgb, var(--ip-teal) 28%, transparent);
    --ip-glass: color-mix(in srgb, var(--ip-paper) 72%, transparent);
    --ip-glass-strong: color-mix(in srgb, var(--ip-paper) 86%, transparent);
    --ip-material-line: color-mix(in srgb, var(--ip-line-strong) 70%, transparent);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) {
    --ip-glass: color-mix(in srgb, var(--ip-paper) 46%, transparent);
    --ip-glass-strong: color-mix(in srgb, var(--ip-paper) 62%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-main {
    width: min(1240px, calc(100vw - 44px));
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell {
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 68%, transparent), transparent 420px),
        linear-gradient(115deg, transparent 0 42%, color-mix(in srgb, var(--ip-accent) 5%, transparent) 52%, transparent 64%),
        linear-gradient(180deg, var(--ip-bg), color-mix(in srgb, var(--ip-bg) 92%, var(--ip-soft-2)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell::before {
    opacity: 0.5;
    background-image:
        linear-gradient(rgba(120, 120, 128, 0.038) 1px, transparent 1px),
        linear-gradient(90deg, rgba(120, 120, 128, 0.032) 1px, transparent 1px),
        linear-gradient(115deg, transparent 0 48%, color-mix(in srgb, var(--ip-line-strong) 20%, transparent) 49%, transparent 52%);
    background-size: 54px 54px, 54px 54px, 100% 100%;
}

html.inori-portal-preview:not(.ip-original-view) .ip-shell::after {
    inset: -20vh -10vw auto;
    height: min(760px, 74vh);
    background:
        repeating-radial-gradient(ellipse at 50% 34%, transparent 0 132px, color-mix(in srgb, var(--ip-line-strong) 24%, transparent) 133px 134px, transparent 136px 232px),
        conic-gradient(from 215deg at 50% 32%, transparent 0 12%, var(--ip-halo-rose) 16%, transparent 24%, transparent 58%, var(--ip-halo-teal) 63%, transparent 72%),
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 44%, transparent), transparent 78%);
    filter: none;
    opacity: 0.62;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0.42) 54%, transparent 100%);
    transform: translate3d(calc(var(--ip-parallax-x) * 0.2), calc(var(--ip-parallax-y) * 0.18), 0);
    animation: ipFineHaloDrift 24s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view) .ip-topbar {
    border-bottom-color: color-mix(in srgb, var(--ip-line-strong) 56%, transparent);
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 84%, transparent), color-mix(in srgb, var(--ip-paper) 62%, transparent));
}

html.inori-portal-preview:not(.ip-original-view) .ip-brand,
html.inori-portal-preview:not(.ip-original-view) .ip-status,
html.inori-portal-preview:not(.ip-original-view) .ip-nav a {
    border-radius: 999px;
}

html.inori-portal-preview:not(.ip-original-view) .ip-logo {
    background:
        linear-gradient(145deg, var(--ip-glass-strong), color-mix(in srgb, var(--ip-bg) 74%, var(--ip-paper))),
        linear-gradient(135deg, var(--ip-halo-rose), var(--ip-halo-teal));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.64) inset,
        0 10px 28px color-mix(in srgb, var(--ip-accent) 12%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home {
    min-height: min(800px, calc(100svh - 58px));
    padding-top: clamp(84px, 11vw, 148px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy {
    position: relative;
    isolation: isolate;
    max-width: 1080px;
    padding: clamp(8px, 2vw, 18px);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy > * {
    position: relative;
    z-index: 1;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::before,
html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::after {
    position: absolute;
    left: 50%;
    top: 46%;
    z-index: 0;
    pointer-events: none;
    border-radius: 50%;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::before {
    width: min(980px, 92vw);
    aspect-ratio: 1.88 / 1;
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 42%, transparent);
    box-shadow:
        0 0 0 1px color-mix(in srgb, var(--ip-paper) 34%, transparent) inset,
        0 0 70px color-mix(in srgb, var(--ip-accent) 9%, transparent);
    opacity: 0.72;
    transform: translate(-50%, -52%) rotate(-7deg);
    mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.88) 20%, rgba(0, 0, 0, 0.88) 80%, transparent 100%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::after {
    width: min(700px, 76vw);
    aspect-ratio: 1.72 / 1;
    border: 1px solid color-mix(in srgb, var(--ip-accent) 30%, transparent);
    background:
        conic-gradient(from 210deg, transparent 0 16%, var(--ip-halo-rose) 20%, transparent 29%, transparent 56%, var(--ip-halo-teal) 63%, transparent 72%);
    opacity: 0.46;
    transform: translate(-50%, -49%) rotate(10deg);
    mask-image: radial-gradient(ellipse at center, transparent 56%, rgba(0, 0, 0, 0.86) 58%, rgba(0, 0, 0, 0.86) 60%, transparent 63%);
    animation: ipFineRingBreathe 13s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 34px;
    padding: 0 14px;
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 48%, transparent);
    border-radius: 999px;
    background: var(--ip-glass);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.54) inset;
    backdrop-filter: blur(18px) saturate(150%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-kicker::before {
    display: block;
    width: 16px;
    height: 1px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--ip-halo-rose), var(--ip-halo-teal));
    content: "";
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1 {
    text-wrap: balance;
    text-shadow: 0 16px 46px color-mix(in srgb, var(--ip-ink) 7%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1::after {
    display: block;
    width: min(280px, 42vw);
    height: 1px;
    margin: clamp(18px, 2.4vw, 28px) auto 0;
    background: linear-gradient(90deg, transparent, var(--ip-halo-rose), var(--ip-halo-teal), transparent);
    box-shadow: 0 0 26px color-mix(in srgb, var(--ip-accent) 22%, transparent);
    content: "";
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-lead {
    text-wrap: pretty;
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn-primary {
    background:
        linear-gradient(180deg, color-mix(in srgb, #313136 92%, var(--ip-accent)), #161618);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.16) inset,
        0 16px 36px rgba(29, 29, 31, 0.16);
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn-primary {
    background:
        linear-gradient(180deg, #ffffff, #e4e4e8);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.72) inset,
        0 18px 44px rgba(255, 255, 255, 0.08);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn:not(.ip-btn-primary) {
    background: color-mix(in srgb, var(--ip-paper) 48%, transparent);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.42) inset;
    backdrop-filter: blur(12px) saturate(140%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
    position: relative;
    overflow: hidden;
    width: min(700px, 100%);
    border: 1px solid color-mix(in srgb, var(--ip-line-strong) 58%, transparent);
    border-radius: 8px;
    background:
        linear-gradient(180deg, var(--ip-glass-strong), color-mix(in srgb, var(--ip-paper) 58%, transparent));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.58) inset,
        0 22px 62px rgba(34, 30, 38, 0.08);
    backdrop-filter: blur(24px) saturate(160%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics::before {
    position: absolute;
    inset: 0 auto 0 0;
    width: 38%;
    pointer-events: none;
    background: linear-gradient(105deg, rgba(255, 255, 255, 0.34), transparent 72%);
    opacity: 0.7;
    content: "";
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.08) inset,
        0 24px 72px rgba(0, 0, 0, 0.34);
}

html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric {
    position: relative;
    z-index: 1;
    border-left-color: color-mix(in srgb, var(--ip-line-strong) 48%, transparent);
}

html.inori-portal-preview:not(.ip-original-view) .ip-academic-overview,
html.inori-portal-preview:not(.ip-original-view) .ip-home-posts,
html.inori-portal-preview:not(.ip-original-view) .ip-home-archive,
html.inori-portal-preview:not(.ip-original-view) .ip-topic-strip,
html.inori-portal-preview:not(.ip-original-view) .ip-research-index {
    width: min(1160px, 100%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    border-color: color-mix(in srgb, var(--ip-line-strong) 58%, transparent);
    background:
        linear-gradient(180deg, var(--ip-glass-strong), color-mix(in srgb, var(--ip-paper) 70%, var(--ip-bg))),
        linear-gradient(135deg, color-mix(in srgb, var(--ip-accent) 8%, transparent), transparent 46%, color-mix(in srgb, var(--ip-teal) 6%, transparent));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.62) inset,
        0 18px 54px rgba(27, 24, 31, 0.07);
    backdrop-filter: blur(14px) saturate(145%);
}

html.inori-portal-preview:not(.ip-original-view) .ip-feature-card::after,
html.inori-portal-preview:not(.ip-original-view) .ip-index-card::after,
html.inori-portal-preview:not(.ip-original-view) .ip-post-card::after,
html.inori-portal-preview:not(.ip-original-view) .ip-research-map-panel::after,
html.inori-portal-preview:not(.ip-original-view) .ip-research-panel::after {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        linear-gradient(90deg, transparent, color-mix(in srgb, var(--ip-accent) 18%, transparent), transparent) 0 0 / 100% 1px no-repeat,
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 32%, transparent), transparent 30%);
    opacity: 0.62;
    content: "";
}

html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-feature-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-index-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-post-card,
html.ip-academic-dark.inori-portal-preview:not(.ip-original-view) .ip-archive-month {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.08) inset,
        0 22px 66px rgba(0, 0, 0, 0.32);
}

html.inori-portal-preview:not(.ip-original-view) .ip-post-card:hover {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.7) inset,
        0 28px 78px rgba(27, 24, 31, 0.12);
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-index {
    border-radius: 8px;
    background:
        repeating-radial-gradient(ellipse at 22% 8%, transparent 0 88px, color-mix(in srgb, var(--ip-line-strong) 16%, transparent) 89px 90px, transparent 92px 168px),
        linear-gradient(135deg, color-mix(in srgb, var(--ip-accent) 8%, transparent), transparent 40%, color-mix(in srgb, var(--ip-teal) 7%, transparent)),
        linear-gradient(180deg, color-mix(in srgb, var(--ip-paper) 96%, transparent), color-mix(in srgb, var(--ip-bg) 70%, var(--ip-paper)));
}

html.inori-portal-preview:not(.ip-original-view) .ip-research-orbit {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.44) inset,
        0 0 0 1px color-mix(in srgb, var(--ip-line) 72%, transparent) inset;
}

@keyframes ipFineHaloDrift {
    0% {
        opacity: 0.48;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.16 - 10px), calc(var(--ip-parallax-y) * 0.14), 0) rotate(-0.6deg);
    }
    100% {
        opacity: 0.68;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.24 + 14px), calc(var(--ip-parallax-y) * 0.2 + 8px), 0) rotate(0.7deg);
    }
}

@keyframes ipFineRingBreathe {
    0% {
        opacity: 0.34;
        transform: translate(-50%, -49%) rotate(10deg) scale(0.985);
    }
    100% {
        opacity: 0.52;
        transform: translate(-50%, -49%) rotate(10deg) scale(1.025);
    }
}

@media (max-width: 820px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-main {
        width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-shell::after {
        inset: -16vh -36vw auto;
        height: 58vh;
        opacity: 0.5;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home {
        padding-top: 72px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::before {
        width: min(720px, 116vw);
        opacity: 0.5;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::after {
        width: min(540px, 100vw);
        opacity: 0.3;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-kicker {
        min-height: 32px;
        padding: 0 12px;
    }
}

@media (max-width: 460px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-shell::after {
        opacity: 0.36;
        mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.58), transparent 88%);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy {
        padding: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::before,
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::after {
        top: 40%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1::after {
        width: 44vw;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
        border-radius: 8px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric {
        border-left: 0;
        border-top-color: color-mix(in srgb, var(--ip-line-strong) 48%, transparent);
    }
}

@media (max-width: 540px) {
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home {
        width: 100%;
        padding-right: 0;
        padding-left: 0;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy {
        width: min(100%, calc(100vw - 32px));
        max-width: 360px;
        justify-items: center;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home h1 {
        max-width: 100%;
        font-size: clamp(35px, 10.6vw, 43px);
        line-height: 1.05;
        overflow-wrap: normal;
        word-break: normal;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-lead {
        max-width: 100%;
        font-size: 15px;
        line-height: 1.68;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: min(100%, 280px);
        gap: 10px;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-btn {
        width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metrics {
        justify-self: center;
        width: min(100%, 312px);
        max-width: calc(100vw - 44px);
        margin-right: auto;
        margin-left: auto;
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric {
        min-height: 62px;
        padding: 14px 12px;
        border-left: 0;
        border-top: 1px solid color-mix(in srgb, var(--ip-line-strong) 48%, transparent);
    }

    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-metric:first-child {
        border-top: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.inori-portal-preview:not(.ip-original-view) .ip-shell::after,
    html.inori-portal-preview:not(.ip-original-view) .ip-hero-home .ip-hero-copy::after {
        animation: none !important;
    }
}

/* Light mode art detail layer: fine rings, luminous lines, and richer hover material. */
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) {
    --ip-light-ring: rgba(214, 77, 130, 0.18);
    --ip-light-ring-cool: rgba(73, 127, 120, 0.14);
    --ip-light-line: rgba(38, 38, 44, 0.075);
    --ip-light-line-strong: rgba(38, 38, 44, 0.14);
    --ip-light-sheen: rgba(255, 255, 255, 0.72);
    --ip-light-card-shadow: 0 22px 64px rgba(35, 31, 42, 0.085);
    --ip-light-card-shadow-hover: 0 30px 90px rgba(35, 31, 42, 0.13);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0, rgba(255, 255, 255, 0.7) 360px, transparent 680px),
        repeating-linear-gradient(112deg, transparent 0 84px, rgba(214, 77, 130, 0.038) 85px 86px, transparent 88px 174px),
        repeating-radial-gradient(ellipse at 50% 16%, transparent 0 142px, rgba(38, 38, 44, 0.046) 143px 144px, transparent 146px 270px),
        linear-gradient(145deg, #fbfbfd 0%, #f6f9f8 48%, #fcf5f8 100%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::before {
    opacity: 0.68;
    background-image:
        linear-gradient(rgba(38, 38, 44, 0.034) 1px, transparent 1px),
        linear-gradient(90deg, rgba(38, 38, 44, 0.03) 1px, transparent 1px),
        linear-gradient(112deg, transparent 0 43%, rgba(214, 77, 130, 0.07) 43.2% 43.45%, transparent 43.8%),
        linear-gradient(68deg, transparent 0 59%, rgba(73, 127, 120, 0.055) 59.2% 59.45%, transparent 59.8%);
    background-size: 58px 58px, 58px 58px, 100% 100%, 100% 100%;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.48), rgba(0, 0, 0, 0.2) 54%, transparent 86%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after {
    inset: -19vh -8vw auto;
    height: min(780px, 76vh);
    background:
        repeating-radial-gradient(ellipse at 50% 32%, transparent 0 118px, rgba(214, 77, 130, 0.11) 119px 120px, transparent 122px 226px),
        repeating-radial-gradient(ellipse at 52% 34%, transparent 0 172px, rgba(73, 127, 120, 0.08) 173px 174px, transparent 176px 312px),
        conic-gradient(from 218deg at 50% 32%, transparent 0 10%, rgba(214, 77, 130, 0.2) 14%, transparent 22%, transparent 56%, rgba(73, 127, 120, 0.15) 62%, transparent 72%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.56), transparent 78%);
    opacity: 0.82;
    mix-blend-mode: multiply;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.84), rgba(0, 0, 0, 0.42) 58%, transparent 100%);
    animation: ipLightHaloDrift 26s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-topbar {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(255, 255, 255, 0.64)),
        linear-gradient(90deg, rgba(214, 77, 130, 0.04), transparent 36%, rgba(73, 127, 120, 0.04));
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.72) inset;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap {
    position: relative;
    isolation: isolate;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
    position: absolute;
    z-index: 0;
    pointer-events: none;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before {
    top: clamp(540px, 56vw, 760px);
    left: max(-132px, -9vw);
    width: min(420px, 62vw);
    aspect-ratio: 1;
    border: 1px solid rgba(214, 77, 130, 0.18);
    border-radius: 50%;
    box-shadow:
        0 0 0 28px rgba(214, 77, 130, 0.045),
        0 0 0 88px rgba(73, 127, 120, 0.026),
        0 18px 90px rgba(214, 77, 130, 0.08);
    opacity: 0.78;
    animation: ipLightRingFloat 18s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
    top: clamp(420px, 44vw, 610px);
    right: max(-150px, -10vw);
    width: min(560px, 72vw);
    height: 230px;
    border-top: 1px solid rgba(38, 38, 44, 0.075);
    border-bottom: 1px solid rgba(214, 77, 130, 0.105);
    background:
        linear-gradient(90deg, transparent, rgba(214, 77, 130, 0.13), transparent) 50% 38% / 100% 1px no-repeat,
        linear-gradient(90deg, transparent, rgba(73, 127, 120, 0.11), transparent) 50% 62% / 88% 1px no-repeat,
        repeating-linear-gradient(90deg, transparent 0 38px, rgba(38, 38, 44, 0.04) 39px 40px);
    opacity: 0.72;
    transform: rotate(-8deg);
    mask-image: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.82) 22%, rgba(0, 0, 0, 0.82) 74%, transparent);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap > .ip-section {
    position: relative;
    z-index: 1;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::before {
    border-color: rgba(38, 38, 44, 0.13);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.82) inset,
        0 0 0 14px rgba(255, 255, 255, 0.2),
        0 32px 110px rgba(214, 77, 130, 0.1);
    opacity: 0.82;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
    border-color: rgba(214, 77, 130, 0.2);
    opacity: 0.56;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-kicker {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.58)),
        linear-gradient(90deg, rgba(214, 77, 130, 0.08), rgba(73, 127, 120, 0.06));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.86) inset,
        0 10px 30px rgba(35, 31, 42, 0.06);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
    background: linear-gradient(180deg, #18181d 0%, #2a2930 54%, #4d464f 100%);
    background-clip: text;
    -webkit-background-clip: text;
    color: #1d1d1f;
    -webkit-text-fill-color: transparent;
    text-shadow: 0 18px 52px rgba(31, 28, 36, 0.08);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1::after {
    height: 2px;
    background:
        linear-gradient(90deg, transparent, rgba(214, 77, 130, 0.58), rgba(73, 127, 120, 0.42), transparent);
    box-shadow:
        0 0 24px rgba(214, 77, 130, 0.2),
        0 10px 32px rgba(73, 127, 120, 0.1);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-btn,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-tool-btn,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-academic-search,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-count {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.74) inset,
        0 10px 28px rgba(35, 31, 42, 0.055);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-btn:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-tool-btn:hover {
    border-color: rgba(214, 77, 130, 0.38);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(255, 246, 250, 0.76));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.82) inset,
        0 16px 42px rgba(214, 77, 130, 0.13);
    transform: translateY(-2px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn-primary:hover {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.22) inset,
        0 20px 54px rgba(29, 29, 31, 0.18),
        0 0 0 4px rgba(214, 77, 130, 0.09);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.78) inset,
        0 24px 78px rgba(35, 31, 42, 0.09);
    transition: border-color 0.28s ease, box-shadow 0.28s ease, transform 0.28s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics:hover {
    border-color: rgba(214, 77, 130, 0.24);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.82) inset,
        0 30px 90px rgba(35, 31, 42, 0.13);
    transform: translateY(-3px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric::after {
    position: absolute;
    left: 18%;
    right: 18%;
    bottom: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(214, 77, 130, 0.32), transparent);
    opacity: 0;
    transition: opacity 0.24s ease;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics:hover .ip-metric::after {
    opacity: 1;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-archive-month,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel {
    border-color: rgba(38, 38, 44, 0.12);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.78) inset,
        var(--ip-light-card-shadow);
    transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.28s ease, box-shadow 0.28s ease, background 0.28s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel::before {
    background:
        linear-gradient(120deg, rgba(255, 255, 255, 0.42), transparent 25%, transparent 68%, rgba(255, 255, 255, 0.22)),
        repeating-linear-gradient(90deg, transparent 0 34px, rgba(38, 38, 44, 0.028) 35px 36px),
        radial-gradient(circle at 16% 0%, rgba(214, 77, 130, 0.08), transparent 34%);
    opacity: 0.72;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel::after {
    background:
        linear-gradient(104deg, transparent 0%, rgba(255, 255, 255, 0.68) 20%, transparent 39%) -145% 0 / 160% 100% no-repeat,
        linear-gradient(90deg, transparent, rgba(214, 77, 130, 0.2), rgba(73, 127, 120, 0.12), transparent) 0 0 / 100% 1px no-repeat,
        linear-gradient(180deg, rgba(255, 255, 255, 0.34), transparent 34%);
    opacity: 0.68;
    transition: background-position 0.68s ease, opacity 0.28s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel:hover {
    border-color: rgba(214, 77, 130, 0.26);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.84) inset,
        var(--ip-light-card-shadow-hover);
    transform: translateY(-6px) scale(1.006);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card:hover::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card:hover::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card:hover::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel:hover::after,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel:hover::after {
    background-position: 155% 0, 0 0, 0 0;
    opacity: 0.92;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-mini-note {
    transition: color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-mini-note:hover {
    color: var(--ip-accent);
    background: linear-gradient(90deg, rgba(214, 77, 130, 0.055), transparent);
    transform: translateX(5px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-section-head h2::after {
    display: block;
    width: 72px;
    height: 1px;
    margin-top: 13px;
    background: linear-gradient(90deg, rgba(214, 77, 130, 0.54), rgba(73, 127, 120, 0.26), transparent);
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-orbit::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-orbit::after {
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-orbit::before {
    inset: 13%;
    border: 1px solid rgba(214, 77, 130, 0.13);
    box-shadow: 0 0 0 34px rgba(73, 127, 120, 0.025);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-orbit::after {
    left: 50%;
    top: 50%;
    width: 74%;
    aspect-ratio: 1.7 / 1;
    border: 1px solid rgba(38, 38, 44, 0.09);
    transform: translate(-50%, -50%) rotate(-15deg);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-thread button,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-month,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-archive-month {
    transition: color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-thread button:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-month:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-archive-month:hover {
    color: var(--ip-accent);
    transform: translateY(-2px);
}

@keyframes ipLightHaloDrift {
    0% {
        opacity: 0.68;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.16 - 12px), calc(var(--ip-parallax-y) * 0.12), 0) rotate(-0.4deg);
    }
    100% {
        opacity: 0.86;
        transform: translate3d(calc(var(--ip-parallax-x) * 0.22 + 16px), calc(var(--ip-parallax-y) * 0.18 + 10px), 0) rotate(0.6deg);
    }
}

@keyframes ipLightRingFloat {
    0% {
        opacity: 0.56;
        transform: translate3d(0, 0, 0) rotate(-5deg);
    }
    100% {
        opacity: 0.82;
        transform: translate3d(18px, -14px, 0) rotate(6deg);
    }
}

@media (max-width: 820px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before {
        width: min(300px, 78vw);
        left: -146px;
        opacity: 0.42;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
        right: -210px;
        width: 420px;
        opacity: 0.38;
    }
}

@media (max-width: 540px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after {
        opacity: 0.44;
        mix-blend-mode: normal;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
        display: none;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card:hover,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card:hover,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card:hover,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel:hover,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel:hover {
        transform: translateY(-3px);
    }
}

@media (prefers-reduced-motion: reduce) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before {
        animation: none !important;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card::after,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card::after,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card::after,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel::after,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel::after {
        transition: none;
    }
}

/* Light hero bubble: gather the homepage intro into one premium glass surface. */
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after {
    opacity: 0.54;
    mix-blend-mode: normal;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
    opacity: 0.26;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
    min-height: min(820px, calc(100svh - 58px));
    padding: clamp(76px, 8vw, 116px) clamp(18px, 4vw, 44px) clamp(42px, 5vw, 72px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
    width: min(1080px, 100%);
    max-width: 1080px;
    min-height: min(650px, calc(100svh - 150px));
    padding: clamp(52px, 6vw, 82px) clamp(34px, 6vw, 82px) clamp(38px, 5vw, 64px);
    overflow: hidden;
    border: 1px solid rgba(40, 38, 46, 0.12);
    border-radius: min(8px, 2vw);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.82), rgba(255, 255, 255, 0.56)),
        radial-gradient(ellipse at 50% 0%, rgba(255, 255, 255, 0.96), transparent 48%),
        linear-gradient(135deg, rgba(255, 244, 249, 0.64), rgba(245, 250, 249, 0.62));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.92) inset,
        0 0 0 1px rgba(255, 255, 255, 0.54) inset,
        0 38px 110px rgba(39, 34, 45, 0.12),
        0 80px 180px rgba(214, 77, 130, 0.08);
    backdrop-filter: blur(28px) saturate(156%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::before {
    left: 50%;
    top: 50%;
    width: min(980px, 92%);
    aspect-ratio: 1.9 / 1;
    border-color: rgba(40, 38, 46, 0.13);
    background:
        repeating-radial-gradient(ellipse at 50% 50%, transparent 0 92px, rgba(214, 77, 130, 0.13) 93px 94px, transparent 96px 174px),
        repeating-radial-gradient(ellipse at 52% 52%, transparent 0 136px, rgba(73, 127, 120, 0.105) 137px 138px, transparent 140px 244px),
        conic-gradient(from 222deg at 50% 50%, transparent 0 12%, rgba(214, 77, 130, 0.16) 16%, transparent 25%, transparent 58%, rgba(73, 127, 120, 0.12) 64%, transparent 76%);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.66) inset,
        0 0 0 18px rgba(255, 255, 255, 0.18),
        0 24px 100px rgba(214, 77, 130, 0.12);
    opacity: 0.82;
    transform: translate(-50%, -50%) rotate(-7deg);
    mask-image: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.92), rgba(0, 0, 0, 0.68) 46%, transparent 72%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
    left: 50%;
    top: 50%;
    width: min(1180px, 112%);
    aspect-ratio: 2.1 / 1;
    border: 0;
    border-radius: 50%;
    background:
        linear-gradient(105deg, transparent 0%, rgba(255, 255, 255, 0.58) 21%, transparent 42%) -120% 0 / 150% 100% no-repeat,
        linear-gradient(90deg, transparent, rgba(214, 77, 130, 0.22), rgba(73, 127, 120, 0.15), transparent) 50% 65% / 78% 1px no-repeat,
        repeating-linear-gradient(90deg, transparent 0 42px, rgba(40, 38, 46, 0.035) 43px 44px),
        repeating-linear-gradient(0deg, transparent 0 42px, rgba(40, 38, 46, 0.028) 43px 44px);
    opacity: 0.64;
    transform: translate(-50%, -50%) rotate(-8deg);
    mask-image: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.66), transparent 73%);
    animation: ipHeroBubbleSheen 12s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
    max-width: 960px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-lead {
    max-width: 690px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.58)),
        linear-gradient(135deg, rgba(255, 244, 249, 0.62), rgba(246, 252, 250, 0.62));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.86) inset,
        0 18px 58px rgba(36, 32, 41, 0.09);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics::after {
    position: absolute;
    inset: 10px;
    pointer-events: none;
    border: 1px solid rgba(255, 255, 255, 0.58);
    border-radius: inherit;
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn {
    min-width: 126px;
}

@keyframes ipHeroBubbleSheen {
    0% {
        background-position: -140% 0, 50% 65%, 0 0, 0 0;
        opacity: 0.5;
    }
    100% {
        background-position: 160% 0, 50% 65%, 18px 0, 0 14px;
        opacity: 0.72;
    }
}

@media (max-width: 820px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
        padding-top: 32px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
        min-height: 0;
        padding: 46px 24px 34px;
    }
}

@media (max-width: 540px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
        padding-top: 24px;
        padding-right: 0;
        padding-left: 0;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
        width: min(100%, calc(100vw - 28px));
        max-width: 390px;
        padding: 36px 20px 28px;
        border-radius: 8px;
        box-shadow:
            0 1px 0 rgba(255, 255, 255, 0.9) inset,
            0 24px 70px rgba(39, 34, 45, 0.11);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::before {
        width: 132%;
        opacity: 0.5;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
        width: 148%;
        opacity: 0.34;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
        width: 100%;
        max-width: 100%;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn {
        min-width: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
        animation: none !important;
    }
}

/* Light academic refresh: airy homepage, refined surfaces, and stronger readability. */
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) {
    --ip-ink: #17171c;
    --ip-text: #2d2b34;
    --ip-muted: #5f5c66;
    --ip-faint: #85808b;
    --ip-line: rgba(32, 31, 38, 0.12);
    --ip-line-strong: rgba(32, 31, 38, 0.20);
    --ip-paper: #ffffff;
    --ip-bg: #f7f7f9;
    --ip-soft: #fff1f6;
    --ip-soft-2: #eff7f4;
    --ip-accent: #cf477b;
    --ip-teal: #3f756e;
    --ip-light-card-shadow: 0 18px 58px rgba(24, 22, 30, 0.08);
    --ip-light-card-shadow-hover: 0 28px 78px rgba(24, 22, 30, 0.13);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0, rgba(255, 255, 255, 0.68) 250px, rgba(247, 247, 249, 0) 620px),
        repeating-linear-gradient(90deg, rgba(23, 23, 28, 0.024) 0 1px, transparent 1px 96px),
        repeating-linear-gradient(0deg, rgba(23, 23, 28, 0.018) 0 1px, transparent 1px 96px),
        linear-gradient(135deg, rgba(255, 241, 246, 0.82) 0%, rgba(247, 247, 249, 0.94) 38%, rgba(239, 247, 244, 0.78) 100%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::before {
    opacity: 0.72;
    background-image:
        linear-gradient(112deg, transparent 0 40%, rgba(207, 71, 123, 0.075) 40.12% 40.28%, transparent 40.42%),
        linear-gradient(68deg, transparent 0 56%, rgba(63, 117, 110, 0.055) 56.12% 56.28%, transparent 56.42%),
        repeating-radial-gradient(ellipse at 52% 8%, transparent 0 118px, rgba(32, 31, 38, 0.042) 119px 120px, transparent 122px 244px);
    background-size: 100% 100%, 100% 100%, 100% 760px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.58), rgba(0, 0, 0, 0.24) 48%, transparent 82%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after {
    inset: 56px 0 auto;
    height: 620px;
    opacity: 0.54;
    mix-blend-mode: normal;
    background:
        repeating-radial-gradient(ellipse at 50% 18%, transparent 0 152px, rgba(207, 71, 123, 0.09) 153px 154px, transparent 156px 300px),
        repeating-radial-gradient(ellipse at 50% 18%, transparent 0 218px, rgba(63, 117, 110, 0.065) 219px 220px, transparent 222px 410px),
        linear-gradient(180deg, rgba(255, 255, 255, 0.34), transparent 78%);
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.76), rgba(0, 0, 0, 0.34) 56%, transparent 100%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-topbar {
    border-bottom-color: rgba(32, 31, 38, 0.095);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.66)),
        linear-gradient(90deg, rgba(255, 241, 246, 0.62), rgba(239, 247, 244, 0.42));
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.72) inset;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-main {
    width: min(1280px, calc(100vw - 48px));
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap {
    gap: 74px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap::after {
    opacity: 0.2;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
    display: grid;
    place-items: center;
    min-height: min(760px, calc(100svh - 54px));
    padding: 108px 34px 78px;
    overflow: visible;
    text-align: left;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home::before {
    left: 50%;
    top: 36px;
    width: min(1200px, 100%);
    height: calc(100% - 56px);
    border: 0;
    border-radius: 0;
    background:
        linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.58) 18%, rgba(255, 255, 255, 0.70) 50%, rgba(255, 255, 255, 0.48) 82%, transparent),
        linear-gradient(180deg, rgba(255, 255, 255, 0.42), transparent 72%),
        repeating-linear-gradient(90deg, transparent 0 76px, rgba(32, 31, 38, 0.024) 77px 78px),
        repeating-radial-gradient(ellipse at 50% 48%, transparent 0 142px, rgba(207, 71, 123, 0.085) 143px 144px, transparent 146px 262px),
        repeating-radial-gradient(ellipse at 50% 48%, transparent 0 206px, rgba(63, 117, 110, 0.055) 207px 208px, transparent 210px 380px);
    box-shadow:
        0 44px 110px rgba(207, 71, 123, 0.055),
        0 60px 140px rgba(63, 117, 110, 0.035);
    opacity: 0.9;
    transform: translateX(-50%);
    mask-image: radial-gradient(ellipse at 50% 48%, rgba(0, 0, 0, 0.94), rgba(0, 0, 0, 0.76) 48%, transparent 80%);
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home::after {
    left: 50%;
    top: 126px;
    bottom: auto;
    width: min(980px, 82%);
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(207, 71, 123, 0.30), rgba(63, 117, 110, 0.18), transparent);
    transform: translateX(-50%);
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(278px, 356px);
    grid-template-areas:
        "kicker metrics"
        "title metrics"
        "lead metrics"
        "actions metrics";
    align-items: center;
    gap: 0 58px;
    width: min(1040px, 100%);
    min-height: 0;
    max-width: 1040px;
    padding: 0;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::before {
    left: -40px;
    top: -64px;
    width: min(720px, 74%);
    aspect-ratio: 1.7 / 1;
    border: 1px solid rgba(32, 31, 38, 0.105);
    border-radius: 50%;
    background:
        repeating-radial-gradient(ellipse at 50% 50%, transparent 0 78px, rgba(207, 71, 123, 0.12) 79px 80px, transparent 82px 152px),
        repeating-radial-gradient(ellipse at 50% 50%, transparent 0 118px, rgba(63, 117, 110, 0.08) 119px 120px, transparent 122px 218px);
    box-shadow: none;
    opacity: 0.58;
    transform: rotate(-9deg);
    mask-image: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0.46) 52%, transparent 74%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
    right: 246px;
    bottom: -54px;
    left: auto;
    top: auto;
    width: min(660px, 68%);
    height: 220px;
    border: 0;
    border-radius: 0;
    background:
        linear-gradient(90deg, transparent, rgba(207, 71, 123, 0.23), rgba(63, 117, 110, 0.13), transparent) 50% 46% / 100% 1px no-repeat,
        linear-gradient(90deg, transparent, rgba(32, 31, 38, 0.08), transparent) 50% 64% / 78% 1px no-repeat,
        repeating-linear-gradient(90deg, transparent 0 46px, rgba(32, 31, 38, 0.032) 47px 48px);
    opacity: 0.7;
    transform: rotate(-6deg);
    mask-image: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.72) 24%, rgba(0, 0, 0, 0.64) 72%, transparent);
    animation: ipLightHeroLineSweep 16s ease-in-out infinite alternate;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-kicker {
    grid-area: kicker;
    justify-self: start;
    margin: 0 0 22px;
    padding: 7px 12px;
    border: 1px solid rgba(32, 31, 38, 0.10);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.62);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.86) inset;
    color: #66626d;
    font-size: 12px;
    font-weight: 760;
    line-height: 1;
    text-transform: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-kicker::before {
    display: inline-block;
    width: 22px;
    height: 1px;
    margin-right: 9px;
    vertical-align: middle;
    background: linear-gradient(90deg, transparent, rgba(207, 71, 123, 0.62));
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
    grid-area: title;
    max-width: 760px;
    margin: 0;
    color: #17171c;
    background: linear-gradient(180deg, #111116 0%, #24222a 56%, #47414a 100%);
    background-clip: text;
    -webkit-background-clip: text;
    font-family: "SF Pro Display", "Inter", "Segoe UI", "HarmonyOS Sans SC", "Microsoft YaHei", sans-serif;
    font-size: 78px;
    font-weight: 760;
    line-height: 1.01;
    text-align: left;
    -webkit-text-fill-color: transparent;
    text-shadow: none;
    overflow-wrap: normal;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1::after {
    display: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-lead {
    grid-area: lead;
    max-width: 620px;
    margin: 26px 0 0;
    color: #5d5965;
    font-size: 19px;
    line-height: 1.72;
    text-align: left;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-actions {
    grid-area: actions;
    justify-content: flex-start;
    margin-top: 34px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn {
    min-width: 136px;
    min-height: 44px;
    padding: 0 20px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 780;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn-primary {
    border-color: rgba(23, 23, 28, 0.94);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.14), transparent 42%),
        #1d1b22;
    color: #fff;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.20) inset,
        0 16px 34px rgba(24, 22, 30, 0.20);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn:not(.ip-btn-primary) {
    border-color: transparent;
    background: transparent;
    color: #cf477b;
    box-shadow: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn:hover {
    transform: translateY(-2px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
    position: relative;
    grid-area: metrics;
    display: grid;
    grid-template-columns: 1fr;
    align-self: center;
    width: 100%;
    max-width: 356px;
    margin: 0;
    overflow: hidden;
    border: 1px solid rgba(32, 31, 38, 0.105);
    border-radius: 8px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.82), rgba(255, 255, 255, 0.52)),
        linear-gradient(135deg, rgba(255, 241, 246, 0.56), rgba(239, 247, 244, 0.42));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.88) inset,
        0 26px 74px rgba(24, 22, 30, 0.10);
    backdrop-filter: blur(22px) saturate(150%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics::before {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(207, 71, 123, 0.28), rgba(63, 117, 110, 0.16), transparent) 0 0 / 100% 1px no-repeat,
        repeating-linear-gradient(90deg, transparent 0 44px, rgba(32, 31, 38, 0.026) 45px 46px);
    content: "";
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics::after {
    display: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric {
    display: grid;
    min-height: 104px;
    padding: 22px 24px;
    border: 0;
    border-top: 1px solid rgba(32, 31, 38, 0.10);
    border-radius: 0;
    background: transparent;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric:first-child {
    border-top: 0;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric strong {
    color: #191820;
    font-size: 34px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric span {
    margin-top: 10px;
    color: #68636d;
    font-size: 12px;
    font-weight: 760;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-academic-overview,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-posts,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-archive,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-topic-strip,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-index {
    width: min(1180px, 100%);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head {
    align-items: end;
    margin-bottom: 24px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head h2 {
    color: #17171c;
    font-size: 42px;
    font-weight: 750;
    line-height: 1.06;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head h2::after {
    width: 96px;
    margin-top: 15px;
    background: linear-gradient(90deg, rgba(207, 71, 123, 0.55), rgba(63, 117, 110, 0.24), transparent);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-read-time,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-count {
    border-color: rgba(32, 31, 38, 0.10);
    background: rgba(255, 255, 255, 0.64);
    color: #67636d;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-overview-grid {
    grid-template-columns: minmax(0, 1.35fr) minmax(330px, 0.65fr);
    gap: 20px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-archive-month,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-index {
    border-color: rgba(32, 31, 38, 0.105);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.58)),
        linear-gradient(135deg, rgba(255, 241, 246, 0.46), rgba(239, 247, 244, 0.32));
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.78) inset,
        var(--ip-light-card-shadow);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel::before,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel::before {
    background:
        linear-gradient(90deg, rgba(207, 71, 123, 0.26), rgba(63, 117, 110, 0.13), transparent) 0 0 / 100% 1px no-repeat,
        repeating-linear-gradient(90deg, transparent 0 52px, rgba(32, 31, 38, 0.026) 53px 54px);
    opacity: 0.76;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel:hover {
    border-color: rgba(207, 71, 123, 0.24);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.86) inset,
        var(--ip-light-card-shadow-hover);
    transform: translateY(-5px);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card {
    min-height: 330px;
    padding: 38px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card span,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card > span,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel span,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-panel > span {
    color: #6c6670;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card strong {
    color: #17171c;
    font-size: 40px;
    line-height: 1.1;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card p,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card p,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-map-panel p {
    color: #625e68;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-mini-note {
    transition: color 0.2s ease, padding 0.2s ease;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-mini-note:hover {
    padding-left: 8px;
    color: #cf477b;
    transform: none;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-tools {
    gap: 10px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-academic-search,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-tool-btn {
    border-color: rgba(32, 31, 38, 0.11);
    background: rgba(255, 255, 255, 0.68);
    color: #403d46;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.80) inset,
        0 12px 28px rgba(24, 22, 30, 0.055);
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-grid {
    gap: 20px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card {
    min-height: 252px;
    padding: 24px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card strong {
    color: #191820;
    font-size: 21px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-index {
    padding: 40px;
    overflow: hidden;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-grid {
    gap: 20px;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-orbit {
    border: 1px solid rgba(32, 31, 38, 0.08);
    background:
        linear-gradient(90deg, rgba(32, 31, 38, 0.035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(32, 31, 38, 0.03) 1px, transparent 1px),
        repeating-radial-gradient(circle at 50% 50%, transparent 0 68px, rgba(207, 71, 123, 0.11) 69px 70px, transparent 72px 138px);
    background-size: 42px 42px, 42px 42px, auto;
}

html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-archive-month:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-thread button:hover,
html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-month:hover {
    color: #cf477b;
}

@keyframes ipLightHeroLineSweep {
    0% {
        opacity: 0.46;
        background-position: 40% 46%, 42% 64%, 0 0;
    }
    100% {
        opacity: 0.72;
        background-position: 58% 46%, 56% 64%, 34px 0;
    }
}

@media (max-width: 1080px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
        grid-template-columns: minmax(0, 1fr) minmax(250px, 310px);
        gap: 0 34px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
        font-size: 62px;
    }
}

@media (max-width: 820px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-main {
        width: 100%;
        padding-right: 16px;
        padding-left: 16px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap {
        gap: 44px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
        min-height: auto;
        padding: 58px 0 42px;
        text-align: center;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home::before {
        top: 18px;
        width: 108%;
        height: calc(100% - 24px);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home::after {
        top: 70px;
        width: 76%;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
        grid-template-columns: 1fr;
        grid-template-areas:
            "kicker"
            "title"
            "lead"
            "actions"
            "metrics";
        justify-items: center;
        width: min(100%, 640px);
        padding: 0 18px;
        gap: 0;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::before {
        left: 50%;
        top: -34px;
        width: 108%;
        opacity: 0.44;
        transform: translateX(-50%) rotate(-8deg);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
        right: auto;
        left: 50%;
        bottom: 92px;
        width: 104%;
        opacity: 0.38;
        transform: translateX(-50%) rotate(-5deg);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-kicker {
        justify-self: center;
        margin-bottom: 20px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
        max-width: 540px;
        font-size: 48px;
        line-height: 1.05;
        text-align: center;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-lead {
        max-width: 520px;
        margin-top: 22px;
        font-size: 17px;
        line-height: 1.68;
        text-align: center;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-actions {
        justify-content: center;
        width: min(100%, 360px);
        margin-top: 28px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: min(100%, 520px);
        max-width: 520px;
        margin-top: 32px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric {
        min-height: 92px;
        padding: 18px 10px;
        border-top: 0;
        border-left: 1px solid rgba(32, 31, 38, 0.10);
        text-align: center;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric:first-child {
        border-left: 0;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head {
        align-items: start;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head h2 {
        font-size: 34px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-overview-grid {
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card {
        min-height: 0;
        padding: 26px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card strong {
        font-size: 31px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-index {
        padding: 26px;
    }
}

@media (max-width: 540px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-shell::after {
        height: 440px;
        opacity: 0.36;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-topbar {
        background: rgba(255, 255, 255, 0.82);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-main {
        padding-right: 12px;
        padding-left: 12px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home {
        padding-top: 42px;
        padding-bottom: 36px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home::before {
        width: 118%;
        background:
            linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.66) 18%, rgba(255, 255, 255, 0.76) 50%, rgba(255, 255, 255, 0.56) 82%, transparent),
            linear-gradient(180deg, rgba(255, 255, 255, 0.38), transparent 74%),
            repeating-linear-gradient(90deg, transparent 0 58px, rgba(32, 31, 38, 0.022) 59px 60px),
            repeating-radial-gradient(ellipse at 50% 48%, transparent 0 96px, rgba(207, 71, 123, 0.075) 97px 98px, transparent 100px 188px),
            repeating-radial-gradient(ellipse at 50% 48%, transparent 0 142px, rgba(63, 117, 110, 0.048) 143px 144px, transparent 146px 264px);
        box-shadow: 0 24px 74px rgba(31, 28, 38, 0.045);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy {
        width: 100%;
        padding: 0 14px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-kicker {
        max-width: 100%;
        margin-bottom: 17px;
        white-space: nowrap;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
        max-width: 340px;
        font-size: 38px;
        line-height: 1.08;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-lead {
        max-width: 334px;
        margin-top: 18px;
        color: #5a5660;
        font-size: 15.5px;
        line-height: 1.72;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-actions {
        grid-template-columns: 1fr;
        gap: 10px;
        width: min(100%, 320px);
        margin-top: 24px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn {
        width: 100%;
        min-width: 0;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-btn:not(.ip-btn-primary) {
        min-height: 32px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
        width: min(100%, 330px);
        margin-top: 26px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric {
        min-height: 78px;
        padding: 15px 7px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric strong {
        font-size: 25px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric span {
        margin-top: 7px;
        font-size: 11px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head {
        display: grid;
        gap: 10px;
        margin-bottom: 18px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-home-wrap .ip-section-head h2 {
        font-size: 29px;
        line-height: 1.12;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-index-card,
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card {
        padding: 20px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card strong {
        font-size: 26px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-feature-card p {
        font-size: 15px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-post-card {
        min-height: 0;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-research-index {
        padding: 20px;
    }
}

@media (max-width: 380px) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home h1 {
        max-width: 300px;
        font-size: 34px;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metrics {
        grid-template-columns: 1fr;
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric {
        min-height: 68px;
        border-left: 0;
        border-top: 1px solid rgba(32, 31, 38, 0.10);
    }

    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-metric:first-child {
        border-top: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.inori-portal-preview:not(.ip-original-view):not(.ip-academic-dark) .ip-hero-home .ip-hero-copy::after {
        animation: none !important;
    }
}
