/* 個人資料頁 */
.pr-wrap{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--sp-4);align-items:start}
@media (max-width:900px){.pr-wrap{grid-template-columns:1fr}}
.pr-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:var(--sp-4) var(--sp-5)}
.pr-card+.pr-card{margin-top:var(--sp-4)}
.pr-card h2{font-size:var(--fs-md);font-weight:700;margin:0 0 var(--sp-1);display:flex;align-items:center;gap:var(--sp-2h)}
.pr-card h2 small{font-weight:400;font-size:var(--fs-xs);color:var(--muted)}
.pr-card h2 .btn{margin-left:auto}
.pr-card p.sub{margin:0 0 var(--sp-3h);font-size:var(--fs-xs);color:var(--muted)}
.pr-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3h) var(--sp-4)}
.pr-grid .full{grid-column:1/-1}
@media (max-width:640px){.pr-grid{grid-template-columns:1fr}}
.pr-f{display:flex;flex-direction:column;gap:var(--sp-1h);min-width:0}
.pr-f label{font-size:var(--fs-xs);font-weight:500;color:var(--ink2)}
.pr-f input,.pr-f select,.pr-f textarea{height:40px;border:1px solid var(--line);background:var(--card);border-radius:var(--r-md);padding:0 12px;font-size:var(--fs-md);width:100%;font-family:inherit}
.pr-f textarea{height:auto;min-height:72px;padding:10px 12px;resize:vertical}
.pr-f input:focus,.pr-f select:focus,.pr-f textarea:focus{border-color:var(--brand-green-deep);outline:none;box-shadow:0 0 0 3px var(--focus)}
.pr-f .hint{font-size:var(--fs-2xs);color:var(--muted)}
.pr-f .hint.err{color:#B3261E}
.pr-f.locked input{background:var(--bg2);color:var(--ink2);cursor:not-allowed}
.pr-f .cnt{font-size:var(--fs-2xs);color:var(--muted);text-align:right}
.pr-lock{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--muted);padding:var(--sp-2h) var(--sp-3);background:var(--bg2);border-radius:var(--r-md);margin-top:var(--sp-3)}
.pr-lock svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;flex:none}
.pr-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.pr-chips label{display:inline-flex;align-items:center;gap:var(--sp-1h);border:1px solid var(--line);border-radius:var(--r-pill);padding:var(--sp-1h) var(--sp-3);font-size:var(--fs-sm);cursor:pointer;user-select:none}
.pr-chips label:has(input:checked){border-color:var(--brand-green-deep);background:rgba(0,112,60,.10);color:var(--brand-green-deep);font-weight:500}
.pr-chips input{position:absolute;opacity:0;width:0;height:0}
.pr-actions{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);padding-top:var(--sp-3h);border-top:1px solid var(--line)}
.pr-actions .msg{font-size:var(--fs-xs);color:var(--muted)}
.pr-actions .msg.err{color:#B3261E}
.pr-actions .btn.primary{padding:9px 18px;font-size:var(--fs-md)}
.pr-actions .btn[disabled]{opacity:.5;cursor:default}

/* 頭像 */
.pr-avatar{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3h);text-align:center}
.pr-avatar .big{width:140px;height:140px;border-radius:50%;object-fit:cover;background:var(--bg2);border:1px solid var(--line)}
.pr-avatar .initials{width:140px;height:140px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:44px;font-weight:700;color:#fff;background:var(--brand-green-deep)}
.pr-avatar .name{font-size:var(--fs-lg);font-weight:700}
.pr-avatar .title{font-size:var(--fs-xs);color:var(--muted);margin-top:2px}
.pr-avatar .row{display:flex;gap:var(--sp-2)}
.pr-avatar .note{font-size:var(--fs-2xs);color:var(--muted);line-height:1.5}

/* 裁剪工具 */
.pr-crop{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}
.pr-crop .stage{position:relative;width:260px;height:260px;overflow:hidden;border-radius:var(--r-lg);background:#222;touch-action:none;cursor:grab;user-select:none}
.pr-crop .stage.drag{cursor:grabbing}
.pr-crop .stage canvas{display:block;width:260px;height:260px}
.pr-crop .mask{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 129px,rgba(0,0,0,.55) 130px);border-radius:var(--r-lg)}
.pr-crop .ring{position:absolute;inset:0;pointer-events:none;border:2px solid rgba(255,255,255,.85);border-radius:50%}
.pr-crop .zoom{display:flex;align-items:center;gap:var(--sp-2h);width:260px;font-size:var(--fs-xs);color:var(--muted)}
.pr-crop .zoom input{flex:1;accent-color:var(--brand-green-deep)}
.pr-crop .tip{font-size:var(--fs-2xs);color:var(--muted)}
.pr-crop .row{display:flex;gap:var(--sp-2)}

/* 跟進期限：每來源覆寫 */
.st-chan{border-top:1px dashed var(--line);padding-top:10px;margin-top:6px}
.st-chan .ck{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);cursor:pointer}
.st-chan .st-chan-fields{margin-top:8px}
/* 09-24：Trinity（皮 ios）設定頁喺 settings.js 砌好分頁（#stTabs 有掣）之前唔露出內容 —— 真 Chrome 逐格錄見到先出冇分頁版再跳做分頁版 */
html[data-theme="ios"] body[data-page="settings"] #app:has(#stTabs:empty){visibility:hidden}

/* ══ 10-30 手機版 v2：設定（淨 html[data-dev="phone"]，iPad／電腦唔郁）══
   ① 分頁列每格平均分闊度（375／420／440 都一樣分，字置中；長字摺行唔截）；
   ② 分頁講解句收入分頁列右邊 ⓘ（settings.js phSub；「代看」狀態句照印）；
   ③ 數字表單（理財假設、匯率、跟進期限…）一項一行：左名右格，好似 iPhone 設定 —— 一屏見晒，唔再一項佔兩行。 */
html[data-dev="phone"] body[data-page="settings"] .st-head{flex-wrap:wrap;align-items:flex-end;column-gap:0;border-bottom:1px solid var(--line)}
html[data-dev="phone"] body[data-page="settings"] .st-head:has(#stSubPh) > div:first-child{display:none}
html[data-dev="phone"] body[data-page="settings"] #stTabs{flex:1 1 0;min-width:0;width:auto;flex-wrap:nowrap;gap:0;padding:0;border-bottom:0}
html[data-dev="phone"] body[data-page="settings"] #stTabs button{flex:1 1 0;min-width:fit-content;padding:0 4px;text-align:center;white-space:nowrap;font-size:15px}   /* 標準 A2：唔截唔摺；放唔落由選單引擎收（R1B） */
html[data-dev="phone"] body[data-page="settings"] .st-subph{display:contents}
html[data-dev="phone"] body[data-page="settings"] .st-subph .ibtn{margin:0 -10px 0 0;order:2}
html[data-dev="phone"] body[data-page="settings"] .st-subph .ipop{order:3;flex:1 1 100%;margin:var(--sp-2) 0}
html[data-dev="phone"] body[data-page="settings"] .st-form{gap:0;grid-template-columns:minmax(0,1fr)}   /* minmax(0)：唔准被一行撐闊出界（375 量過出 31px） */
html[data-dev="phone"] body[data-page="settings"] .st-form > label:not(.pinchk):has(> input:is([type=number],[type=text])){min-width:0;overflow-wrap:anywhere;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:52px;padding:var(--sp-1) 0;border-bottom:1px solid var(--line2);font-size:15px;line-height:1.35}
html[data-dev="phone"] body[data-page="settings"] .st-form > label:not(.pinchk):has(> input:is([type=number],[type=text])) input{flex:0 0 auto;width:min(152px,44%);margin:0;text-align:right}   /* 152：放得落「HK$ 800,000」唔截 */
html[data-dev="phone"] body[data-page="settings"] .st-form > label:not(.pinchk):has(> input:is([type=number],[type=text])):has(+ .st-msg),html[data-dev="phone"] body[data-page="settings"] .st-form > label:not(.pinchk):has(> input:is([type=number],[type=text])):last-child{border-bottom:0}
html[data-dev="phone"] body[data-page="settings"] .st-form > .st-row{margin-top:var(--sp-3)}
/* 10-30 用戶 iPhone 意見④：改密碼等文字格 —— 標籤喺上、輸入格全闊、提示句喺格下面（上面「一項一行」淨管數字格）；
   掣：實心「更改密碼」全闊，次要掣喺下面同高全闊 */
html[data-dev="phone"] body[data-page="settings"] .st-form > label:has(> input[type=password]){display:block;font-size:15px}
html[data-dev="phone"] body[data-page="settings"] .st-form > label:has(> input[type=password]) input{width:100%;margin-top:var(--sp-1h)}
html[data-dev="phone"] body[data-page="settings"] .st-form > label:has(> input[type=password]) + label{margin-top:var(--sp-3)}
html[data-dev="phone"] body[data-page="settings"] .st-form:has(#pwSave) .st-row{display:flex;flex-direction:column;align-items:stretch;gap:var(--sp-2);margin-top:var(--sp-3)}
html[data-dev="phone"] body[data-page="settings"] .st-form:has(#pwSave) .st-row .btn{width:100%;min-height:48px;margin:0}
/* 10-30 用戶 iPhone 意見③：頭像卡 —— 左頭像（72）；右：名（＋ⓘ）／職銜一行；下面兩粒同高掣對齊名；說明框全闊喺掣下面 */
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar{display:grid;grid-template-columns:72px minmax(0,1fr);column-gap:var(--sp-3);row-gap:var(--sp-2);align-items:center;text-align:left}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar :is(.big,.initials){grid-column:1;grid-row:1 / span 2;width:72px;height:72px;min-width:72px;font-size:26px;align-self:start}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar > div:not(.row):not(.note):not(.initials):not(.pr-crop):not(.ipop){grid-column:2;grid-row:1;min-width:0}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar .name{display:flex;align-items:center;gap:var(--sp-1)}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar .name .ibtn{margin:-12px -10px -12px -6px}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar > .row{grid-column:2;grid-row:2;margin:0;display:flex;gap:var(--sp-2);justify-content:flex-start;align-items:stretch}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar > .row .btn{min-height:44px;height:44px;margin:0;padding:0 var(--sp-3)}
html[data-dev="phone"] body[data-page="settings"] main #paneProfile .pr-avatar > .ipop{grid-column:1 / -1;margin:0}
