:root{--ink:#1f2a37;--muted:#5b6675;--brand:#4f46e5;--bg:#f6f7fb;--card:#fff;--line:#e3e6ee}
*{box-sizing:border-box}
html{font-size:20px}
body{margin:0;font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;color:var(--ink);background:var(--bg);line-height:1.6}
.pt-top{display:flex;align-items:center;gap:.8rem;padding:.7rem 1.2rem;background:#fff;border-bottom:1px solid var(--line)}
.pt-brand{font-weight:800;color:var(--brand);font-size:1.3rem;letter-spacing:.05em}
.pt-sub{color:var(--muted)}
.pt-logout{margin-left:auto;font-size:.9rem;padding:.35rem .9rem;border:1px solid var(--line);background:#fff;border-radius:.5rem;cursor:pointer}
.pt-main{max-width:1180px;margin:0 auto;padding:1.2rem}
h1{font-size:1.6rem;margin:.4rem 0 1rem}h2{font-size:1.25rem;margin:0 0 .8rem}h3{font-size:1.05rem}
.pt-hero{text-align:center;padding:1.5rem 0 1rem}.pt-hero p{color:var(--muted);margin:0}
.pt-roles{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;max-width:960px;margin:1rem auto}
.pt-role{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:1.6rem .8rem;border-radius:1rem;background:#fff;border:2px solid var(--line);text-decoration:none;color:var(--ink);transition:.15s}
.pt-role:hover,.pt-role:focus{border-color:var(--brand);transform:translateY(-2px)}
.pt-role b{font-size:1.5rem}.pt-role small{color:var(--muted);font-size:.85rem}.pt-ico{font-size:2.4rem}
.r-teacher{background:#eef2ff}.r-student{background:#fff7e6}.r-parent{background:#ecfdf3}.r-org{background:#f0f9ff}
.pt-note{text-align:center;color:var(--muted)}
.pt-card{background:var(--card);border:1px solid var(--line);border-radius:1rem;padding:1.1rem 1.2rem;margin-bottom:1.1rem}
.pt-login{max-width:460px;margin:2rem auto}
.pt-login form{display:flex;flex-direction:column;gap:.8rem}
label{display:flex;flex-direction:column;gap:.25rem;font-weight:600}
input,select{font:inherit;padding:.5rem .7rem;border:1px solid #c9cfdb;border-radius:.55rem;min-width:0}
.pt-btn{font:inherit;display:inline-block;padding:.5rem 1.1rem;border:0;border-radius:.6rem;background:var(--brand);color:#fff;cursor:pointer;text-decoration:none;white-space:nowrap}
.pt-ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}
.pt-small{font-size:.85rem;padding:.3rem .7rem}
.pt-back{display:inline-block;margin-top:.8rem;color:var(--muted)}
.pt-inline{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:.4rem 0 .8rem}
.pt-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:.6rem}
.pt-stat{background:#fff;border:1px solid var(--line);border-radius:.9rem;padding:.7rem 1rem}
.pt-stat small{color:var(--muted);display:block}.pt-stat b{font-size:1.6rem}
.pt-hint{color:var(--muted);font-size:.9rem}
.pt-table{width:100%;border-collapse:collapse}
.pt-table th,.pt-table td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--line);vertical-align:middle}
.pt-table th{color:var(--muted);font-weight:600;font-size:.9rem}
.pt-table th{white-space:nowrap}.pt-table td{min-width:4em}/* deliv1105-4: 表头/短格不再一字一行 */
.pt-scroll{overflow-x:auto}.pt-tall{max-height:420px;overflow-y:auto}
.pt-badge{display:inline-block;padding:.05rem .6rem;border-radius:1rem;background:#eef2ff}
.ok{color:#047857}.off{color:#b91c1c}
.pt-works {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  gap: .8rem;
  container-type: inline-size;
}
.pt-work {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: .8rem;
  padding: .8rem;
}
.pt-work-copy { min-width: 0; overflow-wrap: anywhere; }
.pt-work-copy h3 { margin: .35rem 0; line-height: 1.35; }
.pt-work-meta { margin: 0 0 .55rem; color: var(--muted); font-size: .9rem; }
.pt-work-copy [data-act="work"] { margin-top: .55rem; }

@container (min-width: 590px) {
  .pt-work:only-child:has(> .pt-thumb) {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    align-items: start;
    gap: 1rem;
  }
  .pt-work:only-child > .pt-thumb {
    margin: 0;
    object-fit: contain;
  }
}
.pt-tag{display:inline-block;font-size:.8rem;padding:0 .5rem;border-radius:.4rem;background:#fde68a;font-weight:700}
.pt-tag.child{background:#bbf7d0}
.pt-list{padding-left:1.2rem}
.pt-msg{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);background:#1f2a37;color:#fff;padding:.5rem 1rem;border-radius:.6rem;margin:0}
.pt-msg:empty{display:none}
.pt-empty{color:var(--muted)}
@media (max-width:720px){.pt-roles{grid-template-columns:repeat(2,1fr)}.pt-main{padding:.8rem}
 .pt-table th,.pt-table td{padding:.4rem .3rem;font-size:.9rem}.pt-inline input,.pt-inline select{flex:1 1 100%}}

/* Org console: full width, 20px base text (consistent with teacher pages). */
body[data-page=org] .pt-main{max-width:none;padding:1.2rem 2rem 2rem}
body[data-page=org] .pt-table th,body[data-page=org] .pt-table td{font-size:1rem;padding:.6rem .7rem}
body[data-page=org] .pt-hint,body[data-page=org] .pt-note,body[data-page=org] .pt-stat small{font-size:1rem}
body[data-page=org] .pt-small{font-size:.9rem;padding:.35rem .8rem}
body[data-page=org] .pt-logout{font-size:1rem}
@media (max-width:720px){body[data-page=org] .pt-main{padding:.8rem}body[data-page=org] .pt-table th,body[data-page=org] .pt-table td{padding:.4rem .3rem;font-size:.95rem}}
@media (max-width:720px){body[data-page=org] [data-students] td:first-child{white-space:nowrap}}

/* V8-05 / V8-04 consent */
.pt-draft{display:inline-block;padding:0 .4rem;border:1px dashed #b45309;border-radius:.3rem;background:#fef3c7;color:#92400e;font-weight:700}
.pt-draft-note{font-size:.85rem}
.pt-consent td:last-child{white-space:nowrap}
.pt-dialog{border:1px solid var(--line);border-radius:1rem;padding:1.2rem 1.4rem;max-width:min(520px,94vw)}
.pt-dialog label{display:block;margin:.5rem 0}.pt-dialog input:not([type=checkbox]){display:block;width:100%;margin-top:.2rem}
.pt-scopes{border:1px solid var(--line);border-radius:.6rem;padding:.4rem .8rem}.pt-scopes label{display:inline-block;margin:.3rem 1rem .3rem 0}
/* A9 AI 熔断 */
.pt-muted{color:var(--muted)}
.pt-btn.pt-danger{background:#b71c1c;border-color:#b71c1c;color:#fff}
.pt-switch td:first-child{width:46%}
[data-ai-switch-card] h3{margin:18px 0 4px;font-size:1.05rem}
[data-moderation-status]{text-align:left;margin-top:12px}
/* A7 内容安全 */
.pt-chips{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.pt-chip{background:#eef1ff;border-radius:10px;padding:4px 10px}
.pt-link{background:none;border:0;color:#b42318;cursor:pointer;font:inherit;padding:0 2px}
[data-safety-card] h3{margin:18px 0 6px;font-size:1.05rem}
/* V8-06/P3: work cards with thumbnails + process timeline */
.pt-thumb{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:.6rem;background:#f1f5f9;margin-bottom:.5rem}
.pt-thumb-expired{display:flex;align-items:center;justify-content:center;text-align:center;padding:.8rem;color:#b45309;font-size:.9rem;border:1px dashed #f59e0b;background:#fffbeb}
.pt-timeline{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem}
.pt-step{border:1px solid var(--line);border-radius:.8rem;padding:.6rem;display:flex;flex-direction:column;gap:.3rem}
.pt-step.final{border-color:#16a34a;box-shadow:0 0 0 2px #bbf7d0}
.pt-step p{margin:0;font-size:.9rem}

/* V79-04 双人复评汇总：短列不折行 */
[data-dual-rating-card] td:nth-child(-n+7),[data-dual-rating-card] th{white-space:nowrap}
/* O1 机构资料 */
.pt-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;align-items:end;max-width:820px}
.pt-grid2 label{display:grid;gap:6px;font-weight:600}
.pt-grid2 input{padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit}
.pt-grid2 .pt-end{display:flex;align-items:end}
@media (max-width:640px){.pt-grid2{grid-template-columns:1fr}}
/* P1 孩子切换 */
.pt-child-switch{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:0 0 6px}
.pt-child-switch label{font-weight:700;display:flex!important;flex-direction:row;gap:8px;align-items:center;margin:0}
.pt-child-switch select{padding:8px 12px;border-radius:10px;border:1px solid #cbd5e1;font:inherit;min-width:200px}
/* O8 机构作品库 */
.o8-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:8px 0 14px}
.o8-filters select{padding:8px 12px;border-radius:10px;border:1px solid #cbd5e1;font:inherit;min-width:140px}
.o8-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.o8-card{all:unset;cursor:pointer;display:grid;gap:6px;border:1px solid #e2e8f0;border-radius:16px;padding:12px;background:#fff}
.o8-card:focus-visible{outline:3px solid #6366f1}
.o8-thumb{aspect-ratio:2/1;border-radius:12px;background:linear-gradient(135deg,#c7d2fe,#fde68a);display:flex;align-items:center;justify-content:center;overflow:hidden;color:#475569;font-size:.85rem}
.o8-thumb img{width:100%;height:100%;object-fit:cover}
.o8-badge{justify-self:start;display:inline-block;padding:1px 8px;border-radius:999px;font-size:.78rem;font-weight:700}
.o8-ai{background:#fef08a;color:#713f12}.o8-own{background:#bbf7d0;color:#14532d}
.o8-detail{margin-top:18px;border-top:1px dashed #cbd5e1;padding-top:14px}
.o8-dhead{display:flex;justify-content:space-between;align-items:center;gap:12px}
.o8-timeline{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.o8-timeline li{border:1px solid #e2e8f0;border-radius:12px;padding:10px;display:grid;gap:6px}
@media (max-width:720px){:not(.pt-scroll)>.pt-table{display:block;max-width:100%;overflow-x:auto}}/* deliv1105-6: 手机上不在滚动框里的表格自己横向滚动 */
/* 老李 2026-11-05 界面精简：折叠区与家长作品卡 */
details.pt-fold>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5em}
details.pt-fold>summary::-webkit-details-marker{display:none}
details.pt-fold>summary::before{content:'▸';color:#888}
details.pt-fold[open]>summary::before{content:'▾'}
details.pt-fold>summary h2{margin:0;font-size:1.1em}
details.pt-fold:not(.pt-card)>summary{color:#555;margin:.6em 0}
.pt-work-line{margin:.25em 0;font-size:.92em;line-height:1.45}
.pt-work-line b{color:#555;font-weight:600}

/* fix2: 390px 家长端孩子选择不撑破页面 */
.pt-child-switch{max-width:100%;box-sizing:border-box;overflow:hidden}
.pt-child-switch label{display:flex;align-items:center;gap:6px;max-width:100%;min-width:0;flex-wrap:wrap}
.pt-child-switch select{max-width:100%;min-width:0;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
/* Unified login appearance for organisation portal */
body[data-page=org]:has([data-login-box]:not([hidden])){min-height:100dvh;background:#8ec7ff url('/static/student-art/home-v2-bg.jpg') center/cover fixed no-repeat}
body[data-page=org]:has([data-login-box]:not([hidden])) .pt-top{display:none}
body[data-page=org]:has([data-login-box]:not([hidden])) .pt-main{max-width:none;margin:0;padding:0;min-height:100dvh;display:flex;align-items:center;justify-content:center}
body[data-page=org]:has([data-login-box]:not([hidden])) .pt-msg{z-index:40}
.unified-portal-login{width:min(440px,calc(100% - 40px));padding:26px 28px 28px;border-radius:28px;background:rgba(255,255,255,.64);border:1px solid rgba(255,255,255,.88);backdrop-filter:blur(16px);box-shadow:0 16px 40px #3b2f8822}
.portal-role-heading{text-align:center;color:#2a2550;margin-bottom:18px}.portal-role-heading h1{margin:6px 0 2px}.portal-role-heading p{margin:0;color:#4c5284;font-size:.8rem}.portal-role-icon{display:block;font-size:40px;line-height:1}
.unified-portal-login form{gap:12px}.unified-portal-login input{min-height:54px;border:0;background:#fff;box-shadow:inset 0 0 0 1px #e4e6f2}.unified-portal-login .pt-btn{width:100%;min-height:58px;background:#ffd24a;color:#2a2550;font-weight:700;border-radius:999px;box-shadow:0 8px 0 #e0b01f,0 12px 24px #c9892033}
.portal-role-icon{width:64px;height:64px;margin:0 auto;border-radius:20px;background:#ddf2ff;display:flex;align-items:center;justify-content:center;font-size:34px}
.portal-login-shell{display:flex;flex-direction:column;align-items:center;gap:26px;width:min(440px,calc(100% - 40px))}.portal-login-shell .unified-login-brand{text-align:center}.portal-login-shell .landing-logo{margin:0;font-family:'Arial Black','Arial',sans-serif;font-weight:900;letter-spacing:.04em;line-height:1;font-size:clamp(56px,8vw,92px);background:linear-gradient(90deg,#ff7ab6,#ff9a3c,#ffd24a,#5ee0c8,#6aa8ff);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 rgba(255,255,255,.45))}.portal-login-shell .landing-sub{margin:10px 0 0;font-size:20px;font-weight:700;color:#2a2f66;text-shadow:0 1px 0 #fff8}
body[data-page=org]:has([data-login-box]:not([hidden])) .portal-login-shell{margin:0 auto}
