/* portal.css — エンドユーザー画面（portal-*.html）専用
 * レイアウト・部品は admin.css をそのまま使い、ここでは差分だけを定義する。 */

/* ─── ヘッダー：ログイン中のサイト ─── */
.pt-site { display: flex; align-items: center; gap: .5rem; color: rgba(255,255,255,.85); font-size: .85rem; }
.pt-site::before { content: '🌐'; }
.pt-site-dom { font-weight: 700; color: #fff; }

/* ─── 左メニュー：ユーザー欄 ─── */
.pt-user { padding: .9rem 1.25rem .6rem; border-top: 1px solid rgba(255,255,255,.08); }
.pt-user-name { color: #fff; font-size: .82rem; font-weight: 700; word-break: break-all; }
.pt-user-mail { color: rgba(255,255,255,.45); font-size: .72rem; word-break: break-all; margin-top: .1rem; }
.pt-brand { padding: 1.1rem 1.25rem .4rem; color: rgba(255,255,255,.5); font-size: .72rem; letter-spacing: .06em; }

/* 読み込み前は本文を薄く（ログイン確認が終わるまで操作させない） */
body:not(.pt-ready):not([data-page="login"]) .dash-main { opacity: .35; pointer-events: none; }

/* ─── ログイン画面 ─── */
.pt-login-bg { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem 1rem; background: var(--navy); }
.pt-login-card { width: 100%; max-width: 420px; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: 2rem 1.75rem; }
.pt-login-logo { font-family: 'Syne', var(--font); font-size: 1.35rem; font-weight: 800; color: var(--navy); text-align: center; }
.pt-login-logo .io { color: var(--orange); }
.pt-login-title { text-align: center; font-size: .95rem; font-weight: 700; color: var(--text); margin: .6rem 0 .25rem; }
.pt-login-sub { text-align: center; font-size: .8rem; color: var(--muted); margin-bottom: 1.4rem; line-height: 1.6; }
.pt-field { margin-bottom: .95rem; }
.pt-field label { display: block; font-size: .78rem; font-weight: 700; color: var(--txt2); margin-bottom: .35rem; }
.pt-field input {
  width: 100%; padding: .62rem .8rem; border: 1.5px solid var(--border); border-radius: 8px;
  font-family: var(--font); font-size: .92rem; color: var(--text); outline: none; box-sizing: border-box; background: var(--white);
}
.pt-field input:focus { border-color: var(--blue); }
.pt-hint { font-size: .72rem; color: var(--txt3); margin-top: .3rem; }
.pt-pw { position: relative; }
.pt-pw input { padding-right: 2.6rem; }
.pt-pw button { position: absolute; right: .4rem; top: 50%; transform: translateY(-50%); border: none; background: none; cursor: pointer; font-size: 1rem; color: var(--muted); padding: .3rem; }
.pt-cap { display: flex; gap: .5rem; align-items: center; }
.pt-cap-q { flex: 0 0 auto; min-width: 7.5rem; text-align: center; padding: .6rem .7rem; border-radius: 8px; background: var(--surface2); font-weight: 700; font-family: var(--mono); color: var(--text); font-size: .95rem; }
.pt-cap input { flex: 1; }
.pt-cap-reload { flex: 0 0 auto; border: 1.5px solid var(--border); background: var(--white); border-radius: 8px; cursor: pointer; padding: .5rem .6rem; color: var(--muted); }
.pt-submit { width: 100%; justify-content: center; padding: .72rem; font-size: .92rem; margin-top: .3rem; }
.pt-err { display: none; margin-bottom: 1rem; padding: .7rem .85rem; border-radius: 8px; background: #FEF2F2; border: 1px solid #FECACA; color: #991B1B; font-size: .82rem; line-height: 1.6; }
.pt-err.show { display: block; }
.pt-otp input { text-align: center; font-size: 1.5rem; letter-spacing: .5em; font-family: var(--mono); }
.pt-back { display: block; text-align: center; margin-top: 1rem; font-size: .8rem; color: var(--muted); background: none; border: none; cursor: pointer; width: 100%; }
.pt-back:hover { color: var(--blue); }
.pt-foot { text-align: center; font-size: .72rem; color: var(--txt3); margin-top: 1.4rem; line-height: 1.6; }

/* ─── ユーザー管理 ─── */
.pt-perm { display: inline-block; font-size: .72rem; font-weight: 700; padding: .16rem .55rem; border-radius: 4px; margin: 0 .25rem .2rem 0; white-space: nowrap; }
.pt-perm.edit { background: #F3F0FF; color: #7C3AED; }
.pt-perm.portal { background: var(--blue-light); color: var(--blue); }
.pt-lock { font-size: .74rem; color: var(--muted); }
.pt-checks { display: flex; gap: 1.1rem; flex-wrap: wrap; padding: .45rem 0; }
.pt-checks label { display: flex; align-items: center; gap: .4rem; font-size: .85rem; cursor: pointer; }
.pt-tbl-scroll { overflow-x: auto; }
