/* RiDスタッフポータル — 就労状況チェック（白黒・マットブラック）
   方針：RiD共通UIスタイル（Project Report Portal 調）。真っ黒#000は使わず #181818。 */
:root{
  --ink:#181818; --ink-2:#2b2b2b; --paper:#faf9f7; --card:#ffffff;
  --line:#e7e6e2; --line-2:#efeeea; --sub:#7a7873; --faint:#a8a6a0;
  --track:#ececea; --chip:#f3f2ee;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.sp-portal{
  font-family:-apple-system,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  background:var(--paper);color:var(--ink);font-feature-settings:"tnum" 1;line-height:1.5;min-height:100vh;
  display:flex;flex-direction:column;
}
.sp-portal .wrap{max-width:1080px;margin:0 auto;padding:0 28px;width:100%}
.sp-portal main.wrap{flex:1}

/* ヘッダ（マットブラック帯62px） */
.sp-portal header.bar{background:var(--ink);color:#fff}
.sp-portal .bar .wrap{display:flex;align-items:center;justify-content:space-between;height:62px}
.sp-portal .brand{display:flex;align-items:center;gap:12px}
.sp-portal .brand .app-logo{display:block;height:30px;width:30px;border-radius:7px}
.sp-portal .brand .sys{font-weight:700;letter-spacing:.26em;font-size:13.5px}
.sp-portal .bar-right{display:flex;align-items:center;gap:14px}
.sp-portal .bar .ver{font-size:11px;letter-spacing:.18em;color:#b9b8b3}
.sp-portal .bar .rid-mark{display:block;height:18px;width:auto;opacity:.92}
.sp-portal .bar-right .login-as{font-size:11.5px;color:#b9b8b3;letter-spacing:.02em;white-space:nowrap}
.sp-portal .bar-right .login-as b{color:#fff;font-weight:600}
.sp-portal .bar .logout{display:inline-block;font-size:11px;letter-spacing:.06em;color:#cfcdc8;
  border:1px solid #444;padding:6px 13px;border-radius:2px;text-decoration:none;white-space:nowrap;transition:.15s}
.sp-portal .bar .logout:hover{color:#fff;border-color:#8a8a8a}
.sp-portal .bar .report-btn{display:inline-block;font-size:11px;letter-spacing:.06em;color:#181818;background:#fff;
  border:1px solid #fff;padding:6px 14px;border-radius:2px;text-decoration:none;white-space:nowrap;font-weight:600;transition:.15s}
.sp-portal .bar .report-btn:hover{background:#e9e8e4;border-color:#e9e8e4}

/* サブバー */
.sp-portal .subbar{background:var(--card);border-bottom:1px solid var(--line)}
.sp-portal .subbar .wrap{display:flex;align-items:center;gap:8px;padding:11px 28px;font-size:12.5px;flex-wrap:wrap}
.sp-portal .subbar .sb-l{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.sp-portal .subbar b{font-weight:600;color:var(--ink)}
.sp-portal .subbar .sb-sep{color:var(--line);margin:0 4px}
.sp-portal .sb-demo{font-size:10.5px;letter-spacing:.04em;color:#7d5a14;background:#fdfaf2;border:1px solid #e3d9c2;border-radius:99px;padding:2px 11px;margin-left:auto}
.sp-portal .sb-live{font-size:10.5px;letter-spacing:.08em;color:#fff;background:var(--ink);border-radius:99px;padding:2px 12px;margin-left:auto}

/* タブナビ */
.sp-portal .tabs{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.sp-portal .tabs .wrap{display:flex;gap:2px;overflow-x:auto}
.sp-portal .tab{padding:14px 18px;font-size:13px;color:var(--sub);text-decoration:none;border-bottom:2px solid transparent;letter-spacing:.04em;white-space:nowrap}
.sp-portal .tab:hover{color:var(--ink)}
.sp-portal .tab.active{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}
.sp-portal .tabs .tab:first-child{padding-left:0}
.sp-portal .tab .lock{font-size:8px;vertical-align:2px;color:var(--faint);margin-left:3px}
.sp-portal .view{display:none;padding-bottom:56px}
.sp-portal .view.active{display:block}

/* タイトル */
.sp-portal .head{padding:42px 0 24px}
.sp-portal .eyebrow{font-size:11px;letter-spacing:.3em;color:var(--faint);text-transform:uppercase;margin-bottom:12px}
.sp-portal .head h1{font-size:28px;font-weight:600;letter-spacing:.02em}
.sp-portal .head .h-job{font-size:13px;font-weight:500;color:var(--sub);margin-left:14px;letter-spacing:.06em}
.sp-portal .head .meta{margin-top:10px;font-size:12.5px;color:var(--sub)}

/* 総括ストリップ＋進捗リング */
.sp-portal .summary{display:flex;align-items:center;gap:34px;border-top:1px solid var(--ink);
  border-bottom:1px solid var(--line);padding:26px 0;margin-bottom:32px}
.sp-portal .ring{--p:0;--size:104px;width:var(--size);height:var(--size);border-radius:50%;flex:0 0 auto;
  background:conic-gradient(var(--ink) calc(var(--p)*1%), var(--track) 0);display:grid;place-items:center;position:relative}
.sp-portal .ring::before{content:"";position:absolute;inset:11px;border-radius:50%;background:var(--paper)}
.sp-portal .ring .val{position:relative;font-size:24px;font-weight:600}
.sp-portal .ring .val small{font-size:12px;font-weight:500;color:var(--sub)}
.sp-portal .summary .s-meta .l{font-size:11px;letter-spacing:.26em;color:var(--faint);text-transform:uppercase}
.sp-portal .summary .s-meta .big{font-size:18px;font-weight:600;margin-top:6px}
.sp-portal .summary .s-meta .sub{font-size:12.5px;color:var(--sub);margin-top:4px}
.sp-portal .summary .divider{width:1px;align-self:stretch;background:var(--line)}

/* リングの状態色（遅れ＝琥珀/赤・達成＝緑） */
.sp-portal .ring.st-warn{background:conic-gradient(#b7791f calc(var(--p)*1%), var(--track) 0)}
.sp-portal .ring.st-bad{background:conic-gradient(#b3382f calc(var(--p)*1%), var(--track) 0)}
.sp-portal .ring.st-good{background:conic-gradient(#2f7d4f calc(var(--p)*1%), var(--track) 0)}

/* 期間別リング（週次/月次/四半期/年度） */
.sp-portal .gtabs{display:flex;gap:6px;margin:14px 0 16px;flex-wrap:wrap}
.sp-portal .gtab{background:var(--chip);border:1px solid transparent;color:var(--sub);border-radius:99px;
  padding:5px 18px;font-size:12px;cursor:pointer;font-family:inherit;transition:.15s}
.sp-portal .gtab:hover{color:var(--ink)}
.sp-portal .gtab.active{background:var(--ink);color:#fff}
.sp-portal .gpane{display:none}
.sp-portal .gpane.active{display:block}
.sp-portal .gp-title{font-size:13.5px;font-weight:600;margin-bottom:14px}
.sp-portal .gp-pace{font-size:11px;font-weight:400;color:var(--faint);margin-left:12px}
.sp-portal .ring-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.sp-portal .ring-card{background:var(--card);border:1px solid var(--line);padding:20px 16px 16px;
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}
.sp-portal .ring-card .ring::before{background:var(--card)}
.sp-portal .ring-card .rc-l{font-size:12.5px;font-weight:600}
.sp-portal .ring-card .rc-s{font-size:10.5px;color:var(--faint);line-height:1.6}
.sp-portal .ring-card.na{justify-content:center;color:var(--faint)}
.sp-portal .ring-card .rc-na{font-size:30px;color:var(--track);line-height:96px}

/* 前期比較バッジ・ストリップ */
.sp-portal .diff{display:inline-block;font-size:10.5px;letter-spacing:.02em;white-space:nowrap}
.sp-portal .diff.up{color:#2f7d4f;font-weight:600}
.sp-portal .diff.down{color:#b3382f;font-weight:600}
.sp-portal .diff.flat,.sp-portal .diff.none{color:var(--faint)}
.sp-portal .kpi .k-diff{margin-top:5px}
.sp-portal .cmp{display:flex;border:1px solid var(--line);background:var(--card);margin:14px 0 4px;flex-wrap:wrap}
.sp-portal .cmp-item{flex:1 1 0;min-width:140px;padding:13px 18px;border-right:1px solid var(--line-2);display:flex;flex-direction:column;gap:4px}
.sp-portal .cmp-item:last-child{border-right:0}
.sp-portal .cmp-l{font-size:10.5px;letter-spacing:.1em;color:var(--faint)}
.sp-portal .cmp-v{font-size:17px;font-weight:600;color:var(--ink)}
.sp-portal .cmp-d{font-size:10.5px}

/* 折れ線グラフ */
.sp-portal .lc{background:var(--card);border:1px solid var(--line);padding:18px 20px 14px;margin:14px 0 4px}
.sp-portal .lc-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.sp-portal .lc-t{font-size:13px;font-weight:600}
.sp-portal .lc-max{font-size:10.5px;color:var(--faint)}
.sp-portal .lc-svg{width:100%;height:auto;display:block}
.sp-portal .lc-axis{stroke:var(--line);stroke-width:1}
.sp-portal .lc-grid{stroke:var(--line-2);stroke-width:1}
.sp-portal .lc-x{display:flex;justify-content:space-between;margin-top:6px;font-size:9.5px;color:var(--faint)}
.sp-portal .lc-legend{display:flex;gap:16px;margin-top:10px;font-size:10.5px;color:var(--sub);flex-wrap:wrap}
.sp-portal .lc-li i{display:inline-block;width:16px;height:0;vertical-align:3px;margin-right:6px;border-top:2px solid}
.sp-portal .ring-grid.three{grid-template-columns:repeat(3,1fr)}

/* KPI */
.sp-portal .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 8px}
.sp-portal .kpi-grid.four{grid-template-columns:repeat(4,1fr)}
.sp-portal .kpi{border:1px solid var(--line);background:var(--card);padding:15px 18px}
.sp-portal .kpi .kv{font-size:23px;font-weight:600;letter-spacing:.01em}
.sp-portal .kpi .kv small{font-size:12px;font-weight:500;color:var(--sub)}
.sp-portal .kpi .kl{font-size:11px;color:var(--sub);margin-top:4px;letter-spacing:.04em}
.sp-portal .kpi.bad{border-color:var(--ink);background:#f6f5f2}
.sp-portal .kpi.bad .kv{color:#b3382f}
.sp-portal .kpi.good .kv{color:#2f7d4f}
.sp-portal .kpi.warn{border-color:#e3d9c2;background:#fdfaf2}
.sp-portal .kpi.warn .kv{color:#9c6a12}
.sp-portal .dim{color:var(--faint)}

/* お知らせ */
.sp-portal .notices{margin-bottom:26px}
.sp-portal .notice-card{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--ink);padding:13px 17px;margin-bottom:8px}
.sp-portal .notice-card .nt-t{font-size:13.5px;font-weight:600}
.sp-portal .notice-card .nt-d{font-size:10.5px;color:var(--faint);margin-left:10px;font-weight:400}
.sp-portal .notice-card .nt-b{font-size:12.5px;color:var(--sub);margin-top:5px;line-height:1.7}

/* 社員管理 */
.sp-portal .st-list{display:grid;gap:8px}
.sp-portal .st-card{background:var(--card);border:1px solid var(--line)}
.sp-portal .st-card.retired{opacity:.65}
.sp-portal .st-card summary{display:flex;align-items:center;gap:12px;padding:13px 18px;cursor:pointer;list-style:none}
.sp-portal .st-card summary::-webkit-details-marker{display:none}
.sp-portal .st-card summary::before{content:'＋';font-size:13px;color:var(--faint)}
.sp-portal .st-card[open] summary::before{content:'−'}
.sp-portal .st-card summary b{font-size:13.5px}
.sp-portal .st-card summary .jb{font-size:11px;color:var(--sub);background:var(--chip);border-radius:99px;padding:2px 10px}
.sp-portal .st-sub{font-size:11px;color:var(--faint)}
.sp-portal .st-body{border-top:1px solid var(--line-2);padding:18px;display:flex;flex-direction:column;gap:4px}
.sp-portal .st-retire{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--sub);margin:2px 0 12px;cursor:pointer}
.sp-portal .st-retire input{width:15px;height:15px;accent-color:var(--ink)}
.sp-portal .st-target{border-top:1px dashed var(--line);margin-top:16px;padding-top:12px}
.sp-portal .st-target .st-sub{display:block;margin-bottom:8px;letter-spacing:.08em}
.sp-portal .btn-line.sm{padding:5px 12px;font-size:11px}

/* 業務内容×評価の設定 */
.sp-portal .st-card.add summary{color:var(--sub)}
.sp-portal .st-card.add{border-style:dashed}
.sp-portal .wi-actions{display:flex;gap:10px;margin-top:6px}
.sp-portal .as-wrap{border-top:1px dashed var(--line);margin:8px 0 12px;padding-top:12px}
.sp-portal .as-wrap .st-sub{display:block;margin-bottom:8px;letter-spacing:.08em}
.sp-portal .as-mode{font-size:12.5px;color:var(--ink);margin-right:18px;cursor:pointer}
.sp-portal .as-mode input{accent-color:var(--ink);margin-right:5px}
.sp-portal .as-list{display:none;flex-wrap:wrap;gap:6px 16px;margin-top:10px}
.sp-portal .as-list.open{display:flex}
.sp-portal .as-chk{font-size:12px;color:var(--ink);cursor:pointer;white-space:nowrap}
.sp-portal .as-chk input{accent-color:var(--ink);margin-right:4px}
.sp-portal .as-chk small{color:var(--faint)}

/* レポート提出：業務評価・エクセルフォーム */
.sp-portal .wi-set{border-top:1px dashed var(--line);margin:4px 0 14px;padding-top:12px}
.sp-portal .wi-set .st-sub{display:block;margin-bottom:8px;letter-spacing:.06em}
.sp-portal .xl-box{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.sp-portal .xl-box .btn-ink{text-decoration:none;display:inline-block}
.sp-portal .xl-sel{display:inline-flex;align-items:center;gap:8px}
.sp-portal .xl-sel select{font-family:inherit;font-size:12.5px;color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:2px;padding:8px 10px}

/* セクション見出し */
.sp-portal .sec{margin:40px 0 14px}
.sp-portal .sec .l{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--faint)}
.sp-portal .sec h2.t{font-size:18px;font-weight:600;margin:8px 0 0;letter-spacing:.01em}

/* テーブル */
.sp-portal .tbl{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line)}
.sp-portal .tbl th{font-size:10.5px;letter-spacing:.12em;color:var(--faint);text-transform:uppercase;
  text-align:left;font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line);background:#f8f7f4}
.sp-portal .tbl td{padding:11px 14px;font-size:12.5px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.sp-portal .tbl tr:last-child td{border-bottom:0}
.sp-portal .tbl .rw{white-space:nowrap;color:var(--sub)}
.sp-portal .tbl .nm{font-weight:600}
.sp-portal .tbl .jb{color:var(--sub);white-space:nowrap}
.sp-portal .tbl .cm{color:var(--sub);font-size:12px}
.sp-portal .tbl .empty{color:var(--faint);text-align:center;padding:26px}
.sp-portal .tbl .neg{color:#b3382f;font-weight:600}
.sp-portal .tbl .pos{font-weight:600}
.sp-portal .tbl .pg{min-width:170px}
.sp-portal .tbl .pct{font-size:11.5px;color:var(--sub);margin-left:10px}
.sp-portal .note{display:inline-block;font-size:11.5px;color:var(--faint);margin-top:10px;line-height:1.7}

/* 進捗バー（warn=遅れ気味・bad=大幅遅れ） */
.sp-portal .pbarwrap{display:inline-block;width:110px;height:5px;background:var(--track);border-radius:99px;overflow:hidden;vertical-align:middle}
.sp-portal .pbar{display:block;height:100%;background:var(--ink);border-radius:99px;transition:width .85s cubic-bezier(.22,1,.36,1)}
.sp-portal .pbar.warn{background:#b7791f}
.sp-portal .pbar.bad{background:#b3382f}

/* 遅れ・未達フラグ */
.sp-portal .st-flag{font-size:9.5px;font-weight:700;white-space:nowrap;padding:2px 7px;border-radius:99px;vertical-align:1px}
.sp-portal .st-flag.warn{background:#fbf6ec;color:#8a6d1a}
.sp-portal .st-flag.bad{background:#fbeeec;color:#b3382f}
.sp-portal .rate.st-bad{color:#b3382f;font-weight:700}
.sp-portal .rate.st-warn{color:#9c6a12;font-weight:700}
.sp-portal .rate.st-good{color:#2f7d4f;font-weight:600}
.sp-portal .tbl tr.row-bad td{background:#fdf6f5}
.sp-portal .tbl tr.row-warn td{background:#fcf9f1}

/* 確認が必要（アラートボックス） */
.sp-portal .al-box{border:1px solid #e6c9c9;background:#fdf3f3;border-radius:3px;padding:14px 18px;margin:0 0 22px}
.sp-portal .al-h{font-size:13px;font-weight:700;color:#a4302a;margin-bottom:9px}
.sp-portal .al-h .mk{font-size:12px;margin-right:3px}
.sp-portal .al-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.sp-portal .al-list li{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink)}
.sp-portal .al-tag{flex:0 0 auto;font-size:10px;font-weight:700;text-align:center;border-radius:99px;padding:2px 0;width:64px;color:#fff}
.sp-portal .al-tag.bad{background:#c0392b}
.sp-portal .al-tag.warn{background:#b8860b}
.sp-portal .al-ok{font-size:12px;color:#2f7d4f;background:#f1f8f2;border:1px solid #bcd6c2;border-radius:3px;padding:10px 16px;margin:0 0 22px}

/* 達成率バー（経過目安の目盛り付き） */
.sp-portal .tg-wrap{background:var(--card);border:1px solid var(--line);padding:16px 20px 12px;margin:12px 0 6px}
.sp-portal .tg-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
.sp-portal .tg-l{font-size:12px;color:var(--sub);letter-spacing:.04em}
.sp-portal .tg-v{font-size:17px;font-weight:700}
.sp-portal .tg-v small{font-size:11px;font-weight:600;margin-left:4px}
.sp-portal .tg-v.st-good{color:#2f7d4f}
.sp-portal .tg-v.st-warn{color:#9c6a12}
.sp-portal .tg-v.st-bad{color:#b3382f}
.sp-portal .tg-track{position:relative;height:9px;background:var(--track);border-radius:99px}
.sp-portal .tg-fill{position:absolute;left:0;top:0;bottom:0;background:var(--ink);border-radius:99px;transition:width .85s cubic-bezier(.22,1,.36,1)}
.sp-portal .tg-fill.st-warn{background:#b7791f}
.sp-portal .tg-fill.st-bad{background:#b3382f}
.sp-portal .tg-fill.st-good{background:#2f7d4f}
.sp-portal .tg-tick{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink);opacity:.55}
.sp-portal .tg-cap{font-size:10.5px;color:var(--faint);margin-top:6px}

/* 週次チェックの目安表示・未提出チップ */
.sp-portal .chk-pace{font-size:11px;color:var(--faint);margin-left:8px}
.sp-portal .chip.alert{background:#b3382f;color:#fff}

/* チップ */
.sp-portal .chip{font-size:11px;color:var(--ink);background:var(--chip);padding:4px 11px;border-radius:99px;white-space:nowrap}
.sp-portal .chip.on{background:var(--ink);color:#fff}
.sp-portal .chip.dim{color:var(--sub)}

/* 週次チェック */
.sp-portal .chk-head{display:flex;align-items:center;gap:18px;border-top:1px solid var(--ink);padding:18px 0 14px;margin-bottom:6px}
.sp-portal .chk-prog .pbarwrap{width:220px;height:6px}
.sp-portal .chk-cnt{font-size:13px;color:var(--sub)}
.sp-portal .chk-cnt b{font-size:16px;color:var(--ink)}
.sp-portal .chk-list{display:grid;gap:2px}
.sp-portal .chk{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);
  padding:13px 18px;cursor:pointer;transition:background .15s}
.sp-portal .chk:hover{background:#fcfbf9}
.sp-portal .chk input{width:17px;height:17px;accent-color:var(--ink);cursor:pointer;flex:0 0 auto}
.sp-portal .chk .chk-nm{font-size:13.5px;flex:1}
.sp-portal .chk.done .chk-nm{color:var(--faint);text-decoration:line-through}
.sp-portal .chk .chk-at{font-size:11px;color:var(--faint);white-space:nowrap}

/* フラッシュメッセージ */
.sp-portal .flash{font-size:12.5px;padding:11px 16px;border-radius:3px;margin:0 0 18px;border:1px solid var(--line);background:var(--card)}
.sp-portal .flash.ok{border-color:#bcd6c2;background:#f1f8f2;color:#2f7d4f}
.sp-portal .flash.ng{border-color:#e6c9c9;background:#fdf3f3;color:#a4302a}
.sp-portal .flash.demo{border-color:#e3d9c2;background:#fdfaf2;color:#7d5a14}

/* フォーム */
.sp-portal .card-box{background:var(--card);border:1px solid var(--line);padding:22px 24px;margin-bottom:8px}
.sp-portal .frow{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.sp-portal .frow label,.sp-portal label.fwide{display:flex;flex-direction:column;gap:6px;font-size:11.5px;color:var(--sub);letter-spacing:.04em}
.sp-portal label.fwide{margin-bottom:14px}
.sp-portal .frow input,.sp-portal .frow select,.sp-portal textarea{
  font-family:inherit;font-size:13.5px;color:var(--ink);background:#fff;border:1px solid var(--line);
  border-radius:2px;padding:9px 11px;min-width:170px;outline:none;transition:border-color .15s}
.sp-portal textarea{width:100%}
.sp-portal .frow input:focus,.sp-portal .frow select:focus,.sp-portal textarea:focus{border-color:var(--ink)}
.sp-portal .btn-ink{background:var(--ink);color:#fff;border:0;border-radius:2px;padding:11px 28px;
  font-size:12.5px;letter-spacing:.08em;cursor:pointer;font-family:inherit;transition:background .15s}
.sp-portal .btn-ink:hover{background:#000}
.sp-portal .btn-ink:disabled{opacity:.5;cursor:default}
.sp-portal .btn-line{background:transparent;color:var(--sub);border:1px solid var(--line);border-radius:2px;
  padding:9px 18px;font-size:12px;cursor:pointer;font-family:inherit;transition:.15s}
.sp-portal .btn-line:hover{border-color:var(--ink);color:var(--ink)}
.sp-portal .rep-form .note,.sp-portal .csv-form .note{margin-left:14px}
.sp-portal .csv-form input[type=file]{font-size:12.5px;color:var(--sub)}
.sp-portal .csv-cols{margin:14px 0 6px}
.sp-portal .csv-col{display:inline-block;font-size:10.5px;color:var(--sub);background:var(--chip);
  border-radius:99px;padding:2px 10px;margin:3px 4px 0 0}
.sp-portal .month-sel{font-family:inherit;font-size:12px;color:var(--ink);background:var(--card);
  border:1px solid var(--line);border-radius:2px;padding:4px 8px;margin-left:10px;cursor:pointer}

/* 金庫（経営） */
.sp-portal .vault-tools{display:flex;align-items:center;gap:10px;margin:0 0 22px;flex-wrap:wrap}
.sp-portal .vault-pw summary{font-size:12px;color:var(--sub);cursor:pointer}
.sp-portal .vault-pw[open]{border:1px solid var(--line);background:var(--card);padding:14px 16px;border-radius:2px}
.sp-portal .vault-pw .frow{margin-top:12px}
.sp-portal .vault-lock{border-color:var(--ink)}
.sp-portal .cost-form .frow input,.sp-portal .cost-form .frow select{min-width:150px}

/* フッタ */
.sp-portal footer{border-top:1px solid var(--line);padding:22px 0 50px;color:var(--faint);font-size:11px;letter-spacing:.04em}

/* ログイン画面 */
.sp-portal.sp-login-page{min-height:100vh;display:flex;flex-direction:column}
.sp-login-page .login-wrap{flex:1;display:grid;place-items:center;padding:48px 20px}
.sp-login-page .login-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);padding:42px 36px 38px}
.login-card .login-h{text-align:center;margin-bottom:30px;color:var(--ink)}
.login-card .login-logo{width:76px;height:76px;border-radius:18px;margin:0 auto 16px;display:block}
.login-card .login-sub{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--faint);margin-top:9px}
#sp-loginform p{margin:0 0 16px}
#sp-loginform label{display:block;font-size:11px;letter-spacing:.1em;color:var(--sub);margin-bottom:6px}
#sp-loginform input.input,
#sp-loginform input[type=text],
#sp-loginform input[type=password]{width:100%;border:1px solid var(--line);background:#fff;
  padding:11px 12px;font-size:14px;color:var(--ink);border-radius:2px;outline:none;
  font-family:inherit;transition:border-color .15s}
#sp-loginform input.input:focus{border-color:var(--ink)}
#sp-loginform .login-submit{margin-top:6px;margin-bottom:0}
#sp-loginform #wp-submit{width:100%;background:var(--ink);color:#fff;border:0;
  padding:13px;font-size:13px;letter-spacing:.1em;border-radius:2px;cursor:pointer;
  font-family:inherit;transition:background .15s}
#sp-loginform #wp-submit:hover{background:#0e0e0e}

/* オープニング画面（RiD共通：黒地→アプリロゴ→ワードマーク→区切り→サブ→版） */
#sp-splash{position:fixed;inset:0;z-index:1000;background:var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .45s ease}
#sp-splash[hidden]{display:none}
#sp-splash.out{opacity:0;pointer-events:none}
#sp-splash > *{opacity:0;animation:sp-fade .7s ease-out forwards}
#sp-splash .sp-icon{width:92px;height:92px;border-radius:20px;margin-bottom:20px;animation-delay:.15s}
#sp-splash .sp-brand{color:#fff;font-size:16px;font-weight:600;letter-spacing:.375em;margin-left:.375em;animation-delay:.3s}
#sp-splash .sp-line{width:52px;height:1px;background:rgba(255,255,255,.32);margin:18px 0;animation-delay:1.05s;animation-duration:.5s}
#sp-splash .sp-sub{color:rgba(255,255,255,.72);font-size:10.5px;letter-spacing:.38em;margin-left:.38em;animation-delay:1.15s;animation-duration:.6s}
#sp-splash .sp-ver{color:rgba(255,255,255,.5);font-size:10px;letter-spacing:.2em;margin-left:.2em;margin-top:10px;animation-delay:1.35s;animation-duration:.6s}
@keyframes sp-fade{to{opacity:1}}

/* レスポンシブ */
@media (max-width:760px){
  .sp-portal .wrap{padding:0 18px}
  .sp-portal .ring-grid,.sp-portal .ring-grid.three{grid-template-columns:repeat(2,1fr)}
  .sp-portal .cmp-item{min-width:46%}
  .sp-portal .bar-right .login-as{display:none}
  .sp-portal .brand .sys{letter-spacing:.14em;font-size:12px}
  .sp-portal .summary{flex-direction:column;align-items:flex-start;gap:18px}
  .sp-portal .summary .divider{display:none}
  .sp-portal .kpi-grid.four{grid-template-columns:repeat(2,1fr)}
  .sp-portal .tbl .pg{min-width:110px}
  .sp-portal .tbl th,.sp-portal .tbl td{padding:9px 10px}
  .sp-portal .frow label{flex:1 1 100%}
  .sp-portal .frow input,.sp-portal .frow select{min-width:0;width:100%}
}
