:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);--bg:#f6f7f9;--card:#fff;--tx:#1f2328;--mut:#6b7280;--bd:#e5e7eb;--ac:#b54a16;--acbg:#fdf2ec;--chip:#eef0f3}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#15171a;--card:#1f2226;--tx:#e8eaed;--mut:#9aa1ab;--bd:#33373d;--ac:#e0763a;--acbg:#2a1f18;--chip:#2b2f35}}
:root[data-theme="dark"]{--bg:#15171a;--card:#1f2226;--tx:#e8eaed;--mut:#9aa1ab;--bd:#33373d;--ac:#e0763a;--acbg:#2a1f18;--chip:#2b2f35}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.6 "Hiragino Sans","Noto Sans JP",Meiryo,sans-serif}
main{max-width:960px;margin:0 auto;padding:16px}
.tabs{display:flex;gap:4px;background:var(--chip);padding:6px;border-radius:12px;overflow-x:auto;margin-bottom:16px}
.tab{border:0;background:none;color:var(--mut);padding:10px 18px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}
.tab.on{background:var(--card);color:var(--ac)}
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:20px;margin-bottom:16px}
h2{font-size:17px;margin:0 0 14px;display:flex;align-items:center;gap:10px}
.n{background:var(--ac);color:#fff;border-radius:50%;width:26px;height:26px;display:inline-grid;place-items:center;font-size:14px}
.sub{color:var(--mut);font-size:13px;font-weight:400}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:700px){.grid{grid-template-columns:1fr}}
.box{border-radius:10px;padding:16px}
.auto{background:var(--acbg);border:1px solid var(--ac);opacity:.85}
.drop{border:2px dashed var(--bd);text-align:center;display:grid;place-items:center;min-height:130px;color:var(--mut)}
.drop.hv{border-color:var(--ac)}
button.p{background:var(--ac);color:#fff;border:0;border-radius:8px;padding:10px 16px;font:inherit;font-weight:600;cursor:pointer}
button.p:disabled{opacity:.45;cursor:not-allowed}
button.s{background:var(--chip);color:var(--tx);border:0;border-radius:8px;padding:7px 12px;font:inherit;cursor:pointer}
input,select{font:inherit;background:var(--card);color:var(--tx);border:1px solid var(--bd);border-radius:6px;padding:6px 8px}
.chip{display:inline-flex;gap:6px;align-items:center;background:var(--chip);border-radius:8px;padding:6px 12px;margin:0 6px 6px 0;border:1px solid transparent;cursor:pointer}
.chip.on{border-color:var(--ac);color:var(--ac);background:var(--card)}
.note{font-size:13px;color:var(--mut)}
.cols{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:13px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px;border-bottom:1px solid var(--bd);vertical-align:top}
.scroll{overflow-x:auto}
textarea{width:100%;min-height:220px;font:inherit;background:var(--bg);color:var(--tx);border:1px solid var(--bd);border-radius:8px;padding:10px}
.ok{color:#15803d}.err{color:#dc2626}
.hide{display:none}
.gh td{background:var(--chip);font-weight:600}
details.card summary{cursor:pointer;font-weight:600}
.row2{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}

/* Web app shell */
.app-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
.app-head h1{font-size:24px;line-height:1.3;margin:4px 0 6px}
.eyebrow{font-size:12px;font-weight:700;color:var(--ac);letter-spacing:.08em}
.status-pill{white-space:nowrap;background:var(--acbg);color:var(--ac);border:1px solid var(--ac);padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700}
.login-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.google-btn{border:1px solid var(--bd);background:var(--card);color:var(--tx);border-radius:8px;padding:10px 16px;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.06)}
@media(max-width:700px){main{padding:10px}.card{padding:14px}.app-head{flex-direction:column}.app-head h1{font-size:20px}.tabs{position:sticky;top:0;z-index:10}}


/* Login */
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(440px,100%);background:var(--card);border:1px solid var(--bd);border-radius:16px;padding:30px;box-shadow:0 12px 35px rgba(0,0,0,.08)}
.login-brand{text-align:center;margin-bottom:24px}
.login-brand h1{font-size:24px;line-height:1.35;margin:7px 0}
.login-brand p,.login-help{color:var(--mut);font-size:13px}
#hnai-login-form p{margin:0 0 16px}
#hnai-login-form label{display:block;font-weight:700;margin-bottom:6px}
#hnai-login-form input[type=text],#hnai-login-form input[type=password]{width:100%;padding:12px 13px;border:1px solid var(--bd);border-radius:8px;background:var(--card);color:var(--tx)}
#hnai-login-form .login-remember label{display:flex;gap:8px;align-items:center;font-weight:400}
#hnai-login-form .login-submit input{width:100%;border:0;border-radius:8px;padding:12px 16px;background:var(--ac);color:#fff;font:inherit;font-weight:700;cursor:pointer}
.login-error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;padding:10px 12px;border-radius:8px;margin-bottom:16px;font-size:13px}
.login-help{text-align:center;margin:10px 0 0}
.userbar{background:var(--card);border-bottom:1px solid var(--bd)}
.userbar-inner{max-width:960px;margin:auto;padding:9px 16px;display:flex;justify-content:flex-end;align-items:center;gap:14px;font-size:13px}
.userbar a{color:var(--ac);font-weight:700;text-decoration:none}
.kaipoke-status{margin-top:10px;padding:9px 11px;border:1px solid var(--bd);border-radius:8px;background:var(--card)}
#kaipokeDot{color:#9ca3af}.kaipoke-status.connected #kaipokeDot{color:#15803d}.kaipoke-status.error #kaipokeDot{color:#dc2626}
.staff-selects{display:flex;flex-direction:column;gap:5px;min-width:160px}.staff-role{display:grid;grid-template-columns:38px minmax(105px,1fr);align-items:center;gap:5px;font-size:12px}.staff-role span{color:var(--mut)}.staff-role select{width:100%;min-width:0}.report-section textarea{white-space:pre-wrap;line-height:1.8}.user-detail td{background:#fbfcfe}.inline-editor{padding:14px 8px}.inline-title{display:flex;justify-content:space-between;margin-bottom:12px}
.role-settings{margin-top:14px;padding:12px;border:1px solid var(--line,#ddd);border-radius:10px;background:#fafafa}.role-setting-row{display:grid;grid-template-columns:minmax(140px,1fr) 140px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid #eee}.role-setting-row:last-child{border-bottom:0}.role-setting-row select{width:100%}

/* 計画書専用の案内 */
.plan-guide{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px;padding:16px;background:#f5f7fa;border-radius:10px}.plan-guide strong{font-size:14px}.plan-guide span{color:#a34d23}#planIntro h2{margin-bottom:8px}#sharedImport summary{cursor:pointer;font-weight:700}#rosterList .role-setting-row{display:grid;grid-template-columns:minmax(140px,1fr) 150px 85px;gap:10px;align-items:center;border-bottom:1px solid #edf0f3;padding:9px 0}#rosterList .role-setting-row button{width:auto!important;margin:0!important}@media(max-width:640px){#rosterList .role-setting-row{grid-template-columns:1fr 110px 60px;gap:6px}.plan-guide{gap:7px}}

/* プラレポを参考にした計画書専用レイアウト */
#planIntro h2,#planFlow h2{display:flex;align-items:center;gap:9px;flex-wrap:wrap}#planMonth{font-size:14px;font-weight:400;padding:7px 12px;border:1px solid #ddd;border-radius:7px}.plan-source-line{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin:15px 0}.plan-patient-title{font-weight:700;margin:16px 0 6px}.plan-patient-chips{border:1px solid #e2e4e8;border-radius:9px;padding:12px;display:flex;flex-wrap:wrap;gap:6px;max-height:220px;overflow-y:auto}.plan-chip{background:white;color:#333;border:1px solid #d6d8dd;border-radius:30px;padding:7px 12px;cursor:pointer;font-size:12px}.plan-chip.active{background:#27282e;color:white;border-color:#27282e}.plan-patient-actions,.plan-bulk-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:12px}.plan-next-step{background:#202126;color:white;padding:12px 15px;border-radius:7px;font-weight:700;margin:15px 0}.plan-filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:14px 0}.plan-filters input{max-width:230px}.plan-stage{padding:16px;border:1px solid #e0e2e6;background:#f7f8fa;border-radius:9px;margin-top:12px}.plan-stage-eval{background:#fff5f0;border-color:#f3d1c4;color:#9d471f}.plan-stage p{margin:8px 0 12px}.plan-accent{background:#b44f22;color:white;border:0;border-radius:7px;padding:10px 17px;cursor:pointer}.plan-dark{background:#24252b;color:white;border:0;border-radius:7px;padding:10px 17px;cursor:pointer}.plan-list-mode #listStep{display:none}.plan-list-mode #h2t{font-size:16px}@media(max-width:650px){.plan-source-line{align-items:flex-start}.plan-chip{font-size:11px}.plan-filters input{max-width:100%}}

/* v2.6 plan monthly carryover + report linkage */
.plan-link-status{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;border:1px solid var(--bd);border-radius:8px;background:var(--chip);font-size:12px}.plan-link-status span{background:var(--card);border:1px solid var(--bd);border-radius:999px;padding:5px 9px}.plan-link-status b{color:var(--mut)}

/* v2.7 担当者の割当方法 */
#assignmentSettingsCard{border-color:#d9def7;background:linear-gradient(180deg,rgba(238,241,255,.78),rgba(255,255,255,.96))}
.assign-method-list{display:grid;gap:12px;margin-top:14px}
.assign-method-option{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:flex-start;padding:14px 16px;border:1.5px solid var(--bd);border-radius:9px;background:var(--card);cursor:pointer;transition:.15s ease}
.assign-method-option:hover{border-color:#aeb8e8}
.assign-method-option.active{border-color:#6677ff;box-shadow:0 0 0 1px rgba(102,119,255,.14)}
.assign-method-option input{width:20px;height:20px;margin:3px 0 0;accent-color:#5b63ff}
.assign-method-option b{display:block;font-size:16px;line-height:1.4;margin-bottom:3px}
.assign-method-option small{display:block;font-size:13px;line-height:1.65;color:var(--mut);font-weight:400}
.assign-manager-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--bd)}
.assign-manager-row select{min-width:190px;margin-left:8px}
#assignMethodMsg{max-width:620px}
#rosterList .role-setting-row{grid-template-columns:minmax(130px,1fr) minmax(120px,150px) minmax(150px,190px) 72px}
.roster-field{display:grid;gap:3px}.roster-field>span{font-size:11px;color:var(--mut)}.roster-field select{width:100%}
.roster-name{font-weight:600}
@media(max-width:760px){
 #rosterList .role-setting-row{grid-template-columns:1fr 1fr;align-items:end}
 #rosterList .role-setting-row .roster-name{grid-column:1/-1}
 #rosterList .role-setting-row button{grid-column:2;justify-self:end}
 .assign-method-option{padding:12px}
 .assign-method-option b{font-size:15px}
}
