:is(.portal, .signin) {
    & svg.i {
        width: 16px;
        height: 16px;
        flex: none;
        fill: none;
        stroke: currentColor;
        stroke-width: 2;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

    & .skip {
        position: absolute;
        top: 8px;
        left: 8px;
        z-index: 10;
        padding: 8px 12px;
        border-radius: 6px;
        background: var(--p-panel);
        color: var(--p-ink);
        transform: translateY(-200%);

        &:focus {
            transform: none;
        }
    }

    & .desk a {
        white-space: nowrap;
    }

    & .sr {
        position: absolute;
        top: 0;
        left: 0;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip-path: inset(50%);
        white-space: nowrap;
    }

    & .lab {
        display: grid;
        gap: 6px;

        & > span {
            color: var(--p-ink-2);
            font-size: 12px;
            font-weight: 500;
        }
    }

    & .fld[aria-invalid="true"] {
        border-color: var(--p-red);
    }

    & .check {
        margin-top: -6px;
        color: var(--p-red);
        font-size: 12px;
    }

    & .warn {
        display: flex;
        flex-wrap: wrap;
        gap: 4px 10px;
        margin: 0;
        padding: 10px 14px;
        border-bottom: 1px solid var(--p-edge-soft);
        background: color-mix(in srgb, var(--p-amber) 10%, transparent);
        color: color-mix(in srgb, var(--p-amber) 80%, var(--p-ink));
        line-height: 1.5;
    }

    & .okbar {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 0;
        padding: 10px 14px;
        border-radius: calc(8px * var(--p-round));
        background: color-mix(in srgb, var(--p-green) 14%, transparent);
        color: var(--p-green);
        font-weight: 500;
        line-height: 1.5;
    }

    & :is(.grid, .form) > .warn {
        border: 1px solid color-mix(in srgb, var(--p-amber) 30%, transparent);
        border-radius: calc(8px * var(--p-round));
    }
}

.portal {
    --side: 236px;
    display: grid;
    grid-template-columns: var(--side) minmax(0, 1fr);
    height: 100vh;
    height: 100dvh;

    &:has(> .comp:not([hidden])) {
        grid-template-columns: var(--side) minmax(0, 1fr) 380px;
    }

    & .side {
        overflow-y: auto;

        & .brand img {
            display: block;
            width: auto;
            height: 22px;
        }

        & .who b {
            overflow: hidden;
            font-size: 13px;
            font-weight: 600;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        & .switch {
            display: flex;
            gap: 6px;

            & .fld {
                flex: 1;
                min-width: 0;
            }
        }

        & .me .lbl {
            display: grid;
            flex: 1;

            & b {
                overflow: hidden;
                font-weight: 500;
                text-overflow: ellipsis;
            }

            & span {
                color: var(--p-ink-3);
                font-size: 11px;
            }
        }
    }

    & .mhead {
        gap: 10px;
        min-height: 44px;
        padding: 6px 28px;
        border-bottom: 0;
        box-shadow: inset 0 -1px 0 var(--p-edge-soft);

        & .grow {
            flex: 1;
        }
    }

    & .upop .lang {
        margin: 0 10px 4px;
    }

    & .seg3 a {
        display: inline-flex;
        align-items: center;
        padding: 5px 12px;
        border-left: 1px solid var(--p-edge-soft);
        color: var(--p-ink-3);
        font-size: 12px;
        white-space: nowrap;

        &:first-child {
            border-left: 0;
        }

        &:hover {
            background: color-mix(in srgb, var(--p-tint) 8%, transparent);
            text-decoration: none;
        }

        &.on {
            background: color-mix(in srgb, var(--p-tint) 16%, transparent);
            color: var(--p-ink);
        }
    }

    & .views {
        padding-bottom: 40px;
    }

    & .view {
        max-width: 1280px;
    }

    & .vhead {
        display: grid;
        gap: 8px;

        & h1 {
            margin: 0;
            font-size: 17px;
            font-weight: 600;
            letter-spacing: -0.01em;
            text-wrap: balance;
            overflow-wrap: anywhere;
        }

        & .num {
            margin-right: 8px;
            color: var(--p-ink-3);
        }
    }

    & .cols {
        display: grid;
        grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
        gap: 18px;
        align-items: start;

        &.even {
            grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        @media (max-width: 1000px) {
            &,
            &.even {
                grid-template-columns: minmax(0, 1fr);
            }
        }
    }

    & .stack {
        display: grid;
        gap: 18px;
        align-content: start;
        min-width: 0;
    }

    & .pb {
        display: block;
        grid-template-columns: minmax(0, 1fr);
        margin: 0;
        padding: 14px;
    }

    & .panel.narrow {
        max-width: 640px;
    }

    & .grid {
        display: grid;
        gap: 12px;
        justify-items: start;

        & > :is(p, .lab, .facts) {
            justify-self: stretch;
        }

        & p {
            margin: 0;
            line-height: 1.55;
        }
    }

    & .row {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
    }

    & .empty {
        margin: 0;
        color: var(--p-ink-5);
    }

    & .sec {
        margin: 0;
        color: var(--p-ink-5);
        font-size: 11px;
        font-weight: 500;
        letter-spacing: 0.08em;
        text-transform: uppercase;
    }

    & .tblw.list {
        container: tickets / inline-size;

        & .tbl.list {
            table-layout: auto;

            & th,
            & td {
                width: auto;
                padding-inline: 10px;
            }

            & th.wide {
                width: 100%;
                min-width: 200px;
            }

            & td.ttl {
                max-width: 0;

                & a {
                    display: block;
                    overflow: hidden;
                    color: inherit;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                }
            }

            & td.co span {
                display: block;
                max-width: 120px;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            & time {
                white-space: nowrap;
            }

            @container tickets (width < 1100px) {
                & .lg {
                    display: none;
                }

                & th.wide {
                    min-width: 140px;
                }
            }

            @container tickets (width < 760px) {
                & .md {
                    display: none;
                }

                & th.wide {
                    min-width: 140px;
                }

                & td.ttl a {
                    display: -webkit-box;
                    overflow-wrap: anywhere;
                    white-space: normal;
                    -webkit-box-orient: vertical;
                    -webkit-line-clamp: 2;
                    line-clamp: 2;
                }
            }

            @container tickets (width < 520px) {
                & .sm {
                    display: none;
                }

                & th.wide {
                    min-width: 0;
                }

                & td.st {
                    white-space: normal;
                }
            }
        }
    }

    & .tfoot {
        &.end {
            justify-content: flex-end;
        }

        & .pager {
            display: flex;
            gap: 8px;
            margin-left: auto;
        }

        & .pager .gbtn,
        & .gbtn.first {
            margin-left: 0;
        }
    }

    & .facts {
        display: grid;
        grid-template-columns: auto 1fr;
        gap: 8px 16px;
        margin: 0;
        padding: 14px;

        & dt {
            color: var(--p-ink-5);
            font-size: 12px;
        }

        & dd {
            margin: 0;
            font-weight: 500;
            text-align: right;
            overflow-wrap: break-word;
        }

        & time {
            white-space: nowrap;
        }

        &.plain {
            grid-template-columns: minmax(0, 1fr);
            gap: 4px;
            padding: 0;

            & dd {
                margin-bottom: 8px;
                text-align: left;
            }
        }
    }

    & .msg {
        display: grid;
        gap: 8px;
        padding: 14px;
        border-top: 1px solid var(--p-edge-soft);

        &:first-of-type {
            border-top: 0;
        }

        & .mh {
            display: flex;
            align-items: center;
            gap: 10px;

            & > span:last-child {
                display: grid;
                min-width: 0;
            }
        }

        & .av {
            display: grid;
            place-items: center;
            width: 28px;
            height: 28px;
            flex: none;
            border-radius: 99px;
            background: var(--p-avatar);
            color: var(--p-on-blue);
            font-size: 11px;
            font-weight: 600;

            &.ref {
                background: var(--p-side);
            }
        }
    }

    & .pre {
        max-width: 75ch;
        margin: 0;
        line-height: 1.55;
        white-space: pre-line;
        overflow-wrap: anywhere;
    }

    & .files {
        display: grid;
        margin: 0;
        padding: 0;
        list-style: none;

        & li {
            display: flex;
            justify-content: space-between;
            gap: 12px;
            padding: 10px 14px;
            border-top: 1px solid var(--p-edge-soft);

            &:first-child {
                border-top: 0;
            }
        }

        & a {
            min-width: 0;
            overflow-wrap: anywhere;
        }

        & .t2 {
            flex: none;
            font-variant-numeric: tabular-nums;
        }
    }

    & .codes {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, max-content));
        gap: 6px 24px;
        margin: 0;
        padding: 0;
        list-style: none;
    }

    & .mono.link {
        overflow-wrap: anywhere;
        user-select: all;
    }

    & .comp {
        display: flex;
        flex-direction: column;
        min-height: 0;
        border-left: 1px solid var(--p-edge-soft);
        background: var(--p-panel);
    }

    @media (max-width: 760px) {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto minmax(0, 1fr);

        &:has(> .comp:not([hidden])) {
            grid-template-columns: minmax(0, 1fr);
        }

        & .side {
            position: static;
            flex-direction: row;
            flex-wrap: wrap;
            align-items: center;
            gap: 10px;
            width: auto;
            padding: 10px 16px;
            overflow: visible;
            border-right: 0;
            border-bottom: 1px solid var(--p-edge-soft);
            transform: none;

            & .brand {
                order: 0;
                padding: 0;
            }

            & .who {
                order: 1;
                flex: 1;
                min-width: 0;
            }

            & .me {
                order: 2;
                padding: 0;

                & .lbl {
                    display: none;
                }

                & .upop {
                    top: 56px;
                    bottom: auto;
                }
            }

            & .switch {
                order: 3;
                width: 100%;
            }

            & .navs {
                order: 4;
                flex: none;
                flex-direction: row;
                width: 100%;
                margin-inline: 0;
                padding-inline: 0;
                overflow-x: auto;
            }

            & .group {
                display: flex;
                gap: 4px;
            }

            & .gl,
            & .env {
                display: none;
            }

            & .nav {
                width: auto;
            }
        }

        & .mhead {
            min-height: 0;
            padding: 6px 16px;
        }

        & .views {
            padding: 16px 16px 28px;
        }

        & .comp {
            display: none;
        }
    }
}

.signin {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    min-height: 100vh;
    min-height: 100dvh;
    background: var(--p-panel);

    & .art {
        position: relative;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        gap: 32px;
        padding: 40px;
        overflow: hidden;
        background: var(--p-side);
        color: var(--p-on-blue);

        &::after {
            position: absolute;
            right: -160px;
            bottom: -160px;
            width: 460px;
            height: 460px;
            border-radius: 50%;
            background: var(--p-brand-gradient);
            opacity: 0.85;
            content: "";
        }

        & > * {
            position: relative;
            z-index: 1;
        }

        & img {
            align-self: flex-start;
            width: auto;
            height: 30px;
        }

        & .hero {
            display: grid;
            gap: 12px;
        }

        & h2 {
            max-width: 16ch;
            margin: 0;
            font-size: 30px;
            font-weight: 600;
            line-height: 1.2;
            letter-spacing: -0.02em;
            text-wrap: balance;
            overflow-wrap: anywhere;
        }

        & p {
            max-width: 42ch;
            margin: 0;
            color: color-mix(in srgb, var(--p-on-blue) 78%, var(--p-side));
            font-size: 14px;
            line-height: 1.55;
        }

        & .prefs {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }

        & .lang {
            justify-self: start;
            margin: 0;

            & .seg3 {
                border-color: color-mix(in srgb, var(--p-on-blue) 35%, var(--p-side));
            }

            & button {
                border-left-color: color-mix(in srgb, var(--p-on-blue) 25%, var(--p-side));
                color: color-mix(in srgb, var(--p-on-blue) 78%, var(--p-side));

                &:hover {
                    background: color-mix(in srgb, var(--p-on-blue) 10%, transparent);
                }

                &.on {
                    background: color-mix(in srgb, var(--p-on-blue) 20%, transparent);
                    color: var(--p-on-blue);
                }

                &:focus-visible {
                    outline: 2px solid var(--p-on-blue);
                    outline-offset: -2px;
                }
            }
        }
    }

    & .form {
        display: grid;
        align-content: start;
        align-self: center;
        justify-self: center;
        gap: 14px;
        width: min(360px, 100%);
        padding: 40px 16px;
    }

    & h1 {
        margin: 0;
        font-size: 22px;
        font-weight: 600;
    }

    & .note {
        line-height: 1.5;
    }

    & .forgot {
        justify-self: end;
    }

    & .terms {
        display: grid;
        align-content: start;
        align-self: center;
        justify-self: center;
        gap: 14px;
        width: min(620px, 100%);
        padding: 40px 16px;
        line-height: 1.55;

        & p,
        & ul {
            margin: 0;
        }

        & ul {
            display: grid;
            gap: 8px;
            padding-left: 20px;
        }
    }

    & .btn {
        justify-content: center;
        padding: 9px 12px;
        font-size: 13px;
    }

    & .or {
        display: flex;
        align-items: center;
        gap: 10px;
        color: var(--p-ink-5);
        font-size: 12px;

        &::before,
        &::after {
            flex: 1;
            height: 1px;
            background: var(--p-edge-soft);
            content: "";
        }
    }

    & .ms {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 8px;
        padding: 8px 12px;
        border: 1px solid var(--p-edge);
        border-radius: calc(7px * var(--p-round));
        color: var(--p-ink-3);

        & svg.i {
            fill: currentColor;
            stroke: none;
        }
    }

    @media (max-width: 760px) {
        grid-template-columns: minmax(0, 1fr);

        & .art {
            gap: 20px;
            padding: 28px 16px;
        }

        & .form {
            align-self: start;
            padding-block: 28px;
        }
    }
}
