/* Unified Portal: supplied Grave Companion layout, scoped to the signed-in workspace. */
body.ns-portal-open{height:auto;min-height:100vh;min-height:100dvh;overflow:auto;background:#faf7f3}
body.ns-portal-open>.app-container{display:none!important}
#nsCustomerPortal{--p-bg:#faf7f3;--p-card:#fff;--p-ink:#1a1a18;--p-muted:#6b6560;--p-line:#e8e2d9;--p-soft:#faf7f3;--p-accent:#c4a484;--p-green:#f1ede7;color:var(--p-ink);background:var(--p-bg);font:14px/1.65 'Sarabun',sans-serif;min-height:100vh;min-height:100dvh;overflow-wrap:anywhere}
#nsCustomerPortal *,#nsCustomerPortal *:before,#nsCustomerPortal *:after{box-sizing:border-box}
#nsCustomerPortal h1,#nsCustomerPortal h2,#nsCustomerPortal h3,#nsCustomerPortal p{margin:0}
#nsCustomerPortal h1,#nsCustomerPortal h2,#nsCustomerPortal h3{font-family:'Fraunces','Sarabun',serif;font-weight:500;line-height:1.4}
#nsCustomerPortal h1{font-size:42px;letter-spacing:-.025em;line-height:1.3;margin-top:8px}#nsCustomerPortal h1 span{color:#9e8064}#nsCustomerPortal h2{font-size:27px}#nsCustomerPortal h3{font-size:18px}
#nsCustomerPortal button,#nsCustomerPortal input,#nsCustomerPortal textarea,#nsCustomerPortal select{font:inherit}
#nsCustomerPortal button,#nsCustomerPortal a{touch-action:manipulation}
#nsCustomerPortal button{cursor:pointer}#nsCustomerPortal button:disabled{cursor:default;opacity:.55}
#nsCustomerPortal :is(button,a,input,textarea,select):focus-visible{outline:2px solid #8c6e50;outline-offset:3px}
#nsCustomerPortal a{color:inherit}#nsCustomerPortal .p-muted{font-size:12px;color:var(--p-muted)}
#nsCustomerPortal svg{width:18px;height:18px;display:inline-block;vertical-align:middle;flex-shrink:0}
#nsCustomerPortal .p-top{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--p-line);background:#faf7f3ed;backdrop-filter:blur(16px);padding-top:env(safe-area-inset-top,0px)}
#nsCustomerPortal .p-top-inner{max-width:1440px;min-height:72px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:10px 32px;gap:18px}
#nsCustomerPortal .p-brand{display:flex;gap:12px;align-items:center;text-decoration:none;flex-shrink:0}
#nsCustomerPortal .p-brand b{font-family:'Fraunces',serif;letter-spacing:.12em;font-size:14px;font-weight:600}
#nsCustomerPortal .p-logo{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#11110f;color:#faf7f3;font-size:11px;letter-spacing:.1em}
#nsCustomerPortal .p-brand small{display:block;font-size:10px;color:var(--p-muted);line-height:1.4}
#nsCustomerPortal .p-account{display:flex;align-items:center;gap:8px;flex-shrink:0}
#nsCustomerPortal .p-account button{border:1px solid var(--p-line);background:#fff;border-radius:999px;min-height:40px;width:40px;display:grid;place-items:center;padding:4px}
#nsCustomerPortal .p-avatar{width:28px;height:28px;border-radius:50%;background:#c4a484;display:grid;place-items:center}
#nsCustomerPortal .p-sidebar{display:flex;align-items:center;gap:3px;padding:4px;background:#fff;border:1px solid var(--p-line);border-radius:999px;box-shadow:0 2px 5px #11110f06}
#nsCustomerPortal .p-sidebar button{border:0;background:transparent;color:var(--p-muted);display:flex;gap:6px;align-items:center;justify-content:center;min-height:40px;padding:8px 15px;border-radius:999px;font-size:12px;white-space:nowrap}
#nsCustomerPortal .p-sidebar button svg{width:15px;height:15px}
#nsCustomerPortal .p-sidebar button[aria-current=page]{background:#11110f;color:#faf7f3}
#nsCustomerPortal .p-count{font-size:10px;min-width:17px;text-align:center;background:#f1ede7;border-radius:99px;color:#6b6560;padding:0 4px}
#nsCustomerPortal .p-sidebar button[aria-current=page] .p-count{background:#faf7f333;color:#faf7f3}
#nsCustomerPortal .p-layout{max-width:1440px;margin:auto}
#nsCustomerPortal .p-main{padding:32px;min-width:0}
#nsCustomerPortal .p-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(270px,1fr);gap:24px;align-items:start}
#nsCustomerPortal .p-stack{display:grid;gap:22px;min-width:0}
#nsCustomerPortal .p-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}
#nsCustomerPortal .p-heading p{margin-top:10px;color:var(--p-muted);font-size:13px}
#nsCustomerPortal .p-today{text-align:right;flex-shrink:0}#nsCustomerPortal .p-today p{font-size:18px;color:var(--p-ink);margin-bottom:10px}
#nsCustomerPortal .p-eyebrow{font-size:10px;letter-spacing:.15em;color:#948b81;line-height:1.5}
#nsCustomerPortal .p-update-strip{width:100%;border:0;border-radius:16px;background:#11110f;color:#faf7f3;padding:13px 18px;display:flex;gap:13px;align-items:center;text-align:left;margin-bottom:24px;min-width:0}
#nsCustomerPortal .p-update-strip>span:nth-child(2){flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px;min-width:0}
#nsCustomerPortal .p-dot{width:7px;height:7px;border-radius:50%;background:var(--p-accent);flex-shrink:0}
#nsCustomerPortal .p-card{background:#fff;border:1px solid var(--p-line);border-radius:26px;padding:26px;min-width:0;box-shadow:0 8px 32px #11110f04}
#nsCustomerPortal .p-badge{display:inline-block;border-radius:999px;background:#f1ede7;color:#6b6560;padding:4px 10px;font-size:11px;line-height:1.4}
#nsCustomerPortal .p-badge.off{background:#efeeeb;color:#76726c}
#nsCustomerPortal .p-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
#nsCustomerPortal .p-appointment-head{display:flex;justify-content:space-between;gap:20px;margin:18px 0}
#nsCustomerPortal .p-visit-title p{margin-top:6px;color:var(--p-muted);font-size:13px}
#nsCustomerPortal .p-visit-title .p-temple{font-size:22px;color:#aa8866;font-weight:500;margin-top:4px}
#nsCustomerPortal .p-location-mark{width:90px;min-height:90px;padding:12px;background:var(--p-soft);border:1px solid var(--p-line);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;flex-shrink:0;color:#9e8064;font-size:10px;max-height:140px;overflow:auto}
#nsCustomerPortal .p-location-mark svg{width:25px;height:25px}
#nsCustomerPortal .p-activities{padding:0;margin:14px 0;list-style:none;display:flex;gap:8px;flex-wrap:wrap}
#nsCustomerPortal .p-activities li{font-size:12px;padding:5px 12px;border:1px solid var(--p-line);background:var(--p-soft);border-radius:999px}
#nsCustomerPortal .p-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:18px}
#nsCustomerPortal .p-button{display:inline-flex;gap:7px;align-items:center;justify-content:center;border:1px solid var(--p-line);border-radius:999px;padding:10px 17px;min-height:44px;background:#fff;color:var(--p-ink);text-decoration:none;font-size:13px;line-height:1.5}
#nsCustomerPortal .p-button.primary{background:#11110f;border-color:#11110f;color:#fff}
#nsCustomerPortal .p-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}
#nsCustomerPortal .p-plan{background:var(--p-bg);box-shadow:none}
#nsCustomerPortal .p-plan h2{margin:15px 0 4px;font-size:25px}#nsCustomerPortal .p-plan>.p-button{width:100%;margin-top:18px}
#nsCustomerPortal .p-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--p-line)}
#nsCustomerPortal .p-stat{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--p-muted)}#nsCustomerPortal .p-stat b{font-size:20px;font-weight:500;color:var(--p-ink)}
#nsCustomerPortal .p-shortcut-heading{font-size:13px;color:var(--p-muted);margin:0 0 10px 2px}
#nsCustomerPortal .p-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#nsCustomerPortal .p-shortcut{text-align:left;display:flex;flex-direction:column;align-items:start;gap:8px;border:1px solid var(--p-line);border-radius:20px;background:white;padding:18px;min-width:0;transition:box-shadow .2s,transform .2s}
#nsCustomerPortal .p-shortcut:hover{box-shadow:0 8px 24px #11110f0d;transform:translateY(-2px)}
#nsCustomerPortal .p-shortcut svg{color:#aa8866;width:21px;height:21px}#nsCustomerPortal .p-shortcut b{font-size:14px;font-weight:500;line-height:1.5}#nsCustomerPortal .p-shortcut small{font-size:11px;color:var(--p-muted);line-height:1.5}
#nsCustomerPortal .p-ink{background:#1a1a18;color:#faf7f3;border-color:#1a1a18;box-shadow:none}
#nsCustomerPortal .p-ink .p-eyebrow,#nsCustomerPortal .p-ink .p-muted{color:#bbb1a5}
#nsCustomerPortal .p-story-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:20px;align-items:start}
#nsCustomerPortal .p-caretaker{position:relative;overflow:hidden;background:radial-gradient(ellipse at 100% 0,#c4a48430,transparent 65%),#1a1a18}
#nsCustomerPortal .p-team-title{display:flex;gap:12px;align-items:center;margin-top:15px}#nsCustomerPortal .p-team-title p{font-size:11px;color:#c5bdb2;margin-top:3px}
#nsCustomerPortal .p-team-avatar{background:#c4a484;color:#11110f;display:grid;place-items:center;flex-shrink:0;width:45px;height:45px;border-radius:50%;font-size:12px}
#nsCustomerPortal .p-caretaker blockquote{font-size:13px;line-height:1.9;margin:22px 0;color:#e4ddd3;white-space:pre-wrap}
#nsCustomerPortal .p-team-tag{font-size:10px;border:1px solid #faf7f326;background:#faf7f30d;border-radius:999px;padding:5px 9px;display:inline-block}
#nsCustomerPortal .p-report-summary>.p-section-title h3{font-size:14px}#nsCustomerPortal .p-report-summary .p-button{font-size:11px;min-height:44px;padding:5px 10px}
#nsCustomerPortal .p-report-summary .p-stack{gap:14px}#nsCustomerPortal .p-report-summary .p-card{padding:17px;border-radius:20px}#nsCustomerPortal .p-report-summary .p-card h3{font-size:15px}
#nsCustomerPortal .p-care-note{display:flex;gap:12px;align-items:start;padding:20px;border-radius:20px}#nsCustomerPortal .p-care-note>svg{color:#c4a484;margin-top:3px}#nsCustomerPortal .p-care-note h3{font-size:14px}#nsCustomerPortal .p-care-note p{font-size:12px;color:#c5bdb2;margin-top:7px}
#nsCustomerPortal .p-places-section{margin-top:24px}
#nsCustomerPortal .p-place-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
#nsCustomerPortal .p-place{border:1px solid var(--p-line);border-radius:16px;padding:16px;background:var(--p-soft);text-align:left;width:100%;min-width:0;display:flex;gap:16px;align-items:start}
#nsCustomerPortal .p-place .p-map{width:50px;min-height:60px;border:1px solid var(--p-line);border-radius:12px;background:white;display:grid;place-items:center;color:#aa8866;flex-shrink:0;padding:10px}
#nsCustomerPortal .p-place .p-map span{display:none}#nsCustomerPortal .p-place-info{min-width:0}#nsCustomerPortal .p-place-info h3{font-size:16px}#nsCustomerPortal .p-place-info p{margin-top:4px;font-size:12px;color:var(--p-muted)}
#nsCustomerPortal .p-letter-columns{grid-template-columns:minmax(0,7fr) minmax(270px,5fr)}
#nsCustomerPortal .p-letter-preview{position:sticky;top:100px}#nsCustomerPortal .p-letter-preview h2{font-size:22px;margin:10px 0}#nsCustomerPortal .p-letter-paper{white-space:pre-wrap;min-height:230px;background:#faf7f3;border:1px solid var(--p-line);border-radius:18px;padding:24px;margin:20px 0 14px;line-height:2}
#nsCustomerPortal .p-ritual{padding:16px;border:1px solid var(--p-line);border-radius:18px;margin:0}#nsCustomerPortal .p-ritual legend{padding:0 7px}#nsCustomerPortal .p-ritual label{display:flex;align-items:center;gap:10px;padding:9px 0}#nsCustomerPortal .p-ritual input{accent-color:#11110f}

#nsCustomerPortal .p-feed{display:grid;gap:14px;margin-top:16px;padding:0;list-style:none}
#nsCustomerPortal .p-feed li{padding:0 0 0 14px;border-left:2px solid #e5dfd5;white-space:pre-wrap;font-size:13px}
#nsCustomerPortal .p-feed time{display:block;font-size:11px;color:var(--p-muted);margin-bottom:5px}
#nsCustomerPortal .p-stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:20px 0}
#nsCustomerPortal .p-stepper li{font-size:10px;color:#a6a29a;list-style:none;border-top:3px solid #e9e5de;padding-top:8px}
#nsCustomerPortal .p-stepper li.on{border-color:#70806b;color:#5e6d58}
#nsCustomerPortal .p-empty{padding:35px 22px;text-align:center;color:var(--p-muted)}
#nsCustomerPortal .p-empty h2{color:var(--p-ink);margin:12px 0 6px}#nsCustomerPortal .p-empty p{font-size:13px}
#nsCustomerPortal .p-form{display:grid;gap:16px;margin-top:22px}
#nsCustomerPortal .p-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
#nsCustomerPortal .p-form label{display:block;font-size:12px;color:#7c756a}
#nsCustomerPortal .p-form input:not([type=checkbox]):not([type=radio]),#nsCustomerPortal .p-form textarea{display:block;width:100%;margin-top:7px;border:1px solid #ded8ce;background:#fff;border-radius:13px;padding:12px;font:inherit;font-size:14px;min-width:0;color:var(--p-ink)}
#nsCustomerPortal .p-form textarea{resize:vertical}
#nsCustomerPortal .p-form select{display:block;width:100%;margin-top:7px;border:1px solid var(--p-line);border-radius:13px;padding:12px;background:white;color:var(--p-ink)}
#nsCustomerPortal .p-options{border:1px solid var(--p-line);border-radius:18px;margin:0;padding:16px;background:var(--p-soft);min-width:0}
#nsCustomerPortal .p-options legend{padding:0 7px;font-size:14px}
#nsCustomerPortal .p-options>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#nsCustomerPortal .p-options label{display:flex;gap:10px;align-items:start;background:#fff;border:1px solid var(--p-line);border-radius:12px;padding:12px;cursor:pointer;min-height:70px}
#nsCustomerPortal .p-options label:has(input:checked){background:#f0ebe1;border-color:#a49985}
#nsCustomerPortal .p-options input{accent-color:#5b4a38;width:18px;height:18px;flex-shrink:0;margin:2px 0 0}
#nsCustomerPortal .p-options b{display:block;font-weight:500;color:var(--p-ink);font-size:13px}
#nsCustomerPortal .p-options small{display:block;font-size:11px;color:var(--p-muted);margin-top:4px}
#nsCustomerPortal details{border:1px solid var(--p-line);border-radius:16px;padding:15px;font-size:13px}
#nsCustomerPortal summary{cursor:pointer;min-height:30px}
#nsCustomerPortal .p-error{color:#a44935;font-size:13px;white-space:pre-wrap}
#nsCustomerPortal .p-notice{background:#fdf8e9;border:1px solid #e9dfc4;padding:14px 18px;border-radius:16px;font-size:13px;margin-bottom:18px}
#nsCustomerPortal .p-private{white-space:pre-wrap;margin-top:14px;padding:16px;border-radius:16px;background:var(--p-soft);font-size:13px}
#nsCustomerPortal .p-private dt{font-size:11px;color:var(--p-muted);margin-top:12px}#nsCustomerPortal .p-private dt:first-child{margin-top:0}#nsCustomerPortal .p-private dd{margin:3px 0 0}
#nsCustomerPortal .p-footer{padding:0 24px 30px;text-align:center;font-size:11px;color:var(--p-muted)}
#nsCustomerPortal .p-mobile{display:none}
@media(max-width:1100px){#nsCustomerPortal .p-top-inner{padding-left:24px;padding-right:24px;gap:12px}#nsCustomerPortal .p-sidebar button{padding:8px 10px}#nsCustomerPortal .p-sidebar button svg{display:none}#nsCustomerPortal .p-main{padding:28px 24px}#nsCustomerPortal .p-story-grid{grid-template-columns:1fr}#nsCustomerPortal .p-columns{grid-template-columns:minmax(0,1.65fr) minmax(250px,1fr)}#nsCustomerPortal .p-shortcut{padding:15px}#nsCustomerPortal .p-card{padding:22px}}
@media(max-width:800px){#nsCustomerPortal .p-sidebar{display:none}#nsCustomerPortal .p-top-inner{min-height:64px;padding:10px 16px}#nsCustomerPortal .p-brand{gap:9px}#nsCustomerPortal .p-main{padding:24px 16px}#nsCustomerPortal h1{font-size:32px}#nsCustomerPortal h2{font-size:24px}#nsCustomerPortal .p-heading{align-items:start;gap:12px}#nsCustomerPortal .p-today{padding-top:5px;flex-shrink:1}#nsCustomerPortal .p-today p{display:none}#nsCustomerPortal .p-today .p-eyebrow{font-size:9px;letter-spacing:0}#nsCustomerPortal .p-today .p-button{margin-top:12px;font-size:11px;padding:8px 12px}#nsCustomerPortal .p-columns,#nsCustomerPortal .p-letter-columns{grid-template-columns:minmax(0,1fr);gap:20px}#nsCustomerPortal .p-story-grid{grid-template-columns:minmax(0,1fr)}#nsCustomerPortal .p-card{border-radius:24px;padding:20px}#nsCustomerPortal .p-appointment-head{gap:12px}#nsCustomerPortal .p-location-mark{width:70px;min-height:76px;padding:9px}#nsCustomerPortal .p-place-grid,#nsCustomerPortal .p-form-grid,#nsCustomerPortal .p-options>div{grid-template-columns:minmax(0,1fr)}#nsCustomerPortal .p-letter-preview{position:static}#nsCustomerPortal .p-mobile{position:fixed;bottom:0;left:0;right:0;z-index:30;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#faf7f3f5;backdrop-filter:blur(12px);border-top:1px solid var(--p-line);padding:7px 6px max(7px,env(safe-area-inset-bottom))}#nsCustomerPortal .p-mobile button{border:0;background:transparent;color:var(--p-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:7px 2px;min-height:48px;font-size:10px;border-radius:14px;min-width:0}#nsCustomerPortal .p-mobile button[aria-current=page]{color:#11110f;background:#eee7df}#nsCustomerPortal .p-footer{padding:0 16px calc(100px + env(safe-area-inset-bottom))}#nsCustomerPortal .p-stepper li{font-size:9px}#nsCustomerPortal .p-update-strip{margin-bottom:20px}}
@media(prefers-reduced-motion:reduce){#nsCustomerPortal .p-shortcut{transition:none}#nsCustomerPortal .p-shortcut:hover{transform:none}}

/* Unmodified uploaded Portal, isolated from authenticated request data. */
body.ns-original-open{overflow:hidden}
#nsCustomerPortal[hidden]{display:none!important}
#nsOriginalPortal{position:fixed;inset:0;z-index:50;background:#faf7f3;display:flex;flex-direction:column;height:100vh;height:100dvh}
#nsOriginalPortal iframe{display:block;flex:1;width:100%;min-height:0;border:0;background:#faf7f3}
.ns-original-bar{padding:8px 14px;background:#11110f;color:#faf7f3;font:11px/1.5 Sarabun,sans-serif;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ns-original-bar>div{display:flex;gap:7px;flex-wrap:wrap}.ns-original-bar button{font:inherit;border:1px solid #faf7f340;color:#faf7f3;background:transparent;border-radius:99px;padding:7px 11px;cursor:pointer;min-height:44px}
.ns-original-bar [data-original-action="logout"]{min-height:44px;min-width:96px;background:#faf7f3;color:#11110f;border-color:#faf7f3}.ns-original-bar button:disabled{opacity:.55;cursor:wait}.ns-original-bar [data-original-error]:empty{display:none}.ns-original-bar [data-original-error]:not(:empty){flex-basis:100%;color:#ffd7cf}.ns-original-bar button:focus-visible{outline:2px solid #c4a484;outline-offset:3px}
