:root{--bg:#08080b;--surface:#121216;--ink:#f4f4f6;--text:#b5b5c2;--muted:#7e7e8b;--line:#2a2a34;--pink:#ec008c;--pink-soft:#351126;--green:#65bf99;--amber:#e5af63;--font:'Microsoft YaHei UI','Microsoft YaHei',sans-serif}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 var(--font)}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--pink);outline-offset:3px}.portal-shell{min-height:100vh;display:flex;max-width:1400px;margin:auto}.portal-intro{width:calc(100% - 460px);max-width:700px;padding:80px 8vw 50px 7vw;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at 20% 22%,#311127 0,#08080b 46%)}.portal-brand{display:flex;gap:9px;align-items:center;font-weight:800;letter-spacing:1.2px;font-size:18px;margin-bottom:44px}.portal-brand img{width:38px;height:38px;object-fit:contain}.portal-intro .eyebrow{font-size:12px;letter-spacing:2px;color:#d96ca9}.portal-intro h1{font-size:46px;line-height:1.18;letter-spacing:-1.2px;margin:14px 0 20px}.portal-intro h1 em{font-style:normal;color:var(--pink)}.portal-copy{color:var(--text);font-size:15px;line-height:2}.portal-links{display:grid;gap:3px;margin-top:45px;max-width:260px}.portal-links a{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--text);display:flex;justify-content:space-between}.portal-links a:hover{color:#fff;border-color:#8b3568}.portal-note{margin-top:auto;color:#656570;font-size:12px;line-height:1.9}.portal-device{width:410px;min-height:100vh;background:var(--surface);border:1px solid #24242c;box-shadow:-20px 0 90px #0006;position:relative;overflow:hidden}.portal-device:before{content:'';display:block;position:absolute;left:0;right:0;top:0;height:2px;background:var(--pink);z-index:5}.prototype-label{position:relative;z-index:2;background:#16161c;border-bottom:1px solid var(--line);padding:7px 17px;color:#9494a1;font-size:12px;letter-spacing:.2px}.prototype-label .label-dot{display:inline-block;width:5px;height:5px;background:var(--pink);border-radius:50%;margin-right:6px}.label-date{float:right;color:#686874}.portal-header{height:70px;padding:16px 20px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:var(--surface)}.portal-header h1{font-size:21px;margin:0;letter-spacing:-.4px}.portal-header p{margin:1px 0 0;font-size:12px;color:var(--muted)}.portal-header .header-action{border:1px solid var(--line);border-radius:50%;background:var(--surface-2);color:var(--ink);width:31px;height:31px}.portal-main{padding:18px 17px 97px;min-height:calc(100vh - 115px);overflow:auto}.portal-main::-webkit-scrollbar{width:4px}.portal-main::-webkit-scrollbar-thumb{background:#3d3d49;border-radius:10px}.portal-nav{height:75px;position:absolute;left:0;right:0;bottom:0;background:#111116;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);z-index:4;padding:8px 5px calc(8px + env(safe-area-inset-bottom))}.portal-nav button{background:none;border:0;color:#777784;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px}.portal-nav button b{font-size:19px;font-weight:400;line-height:1.1}.portal-nav button.active{color:#fff}.portal-nav button.active b{color:var(--pink)}.page-kicker{color:#e071ae;font-size:12px;letter-spacing:1.1px;font-weight:700}.portal-card{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:15px;margin-bottom:12px}.portal-card h2{font-size:18px;line-height:1.35;margin:4px 0 7px}.portal-card h3{font-size:14px;margin:0 0 7px}.muted{color:var(--muted);font-size:12px}.small{font-size:12px;color:var(--muted)}.chip{display:inline-flex;align-items:center;border-radius:12px;padding:3px 7px;background:#272730;color:#c2c2ce;font-size:12px}.chip.pink{background:var(--pink-soft);color:#f084bf}.chip.green{background:#163328;color:#7bc6a5}.chip.amber{background:#342818;color:#e0af6a}.portal-button{border:1px solid var(--line);background:#22222b;color:#e9e9ef;border-radius:5px;padding:8px 11px;font-size:12px}.portal-button:hover{border-color:#777786}.portal-button.primary{background:var(--pink);border-color:var(--pink);color:#fff}.portal-button.block{width:100%;display:block;text-align:center}.portal-button.ghost{border-color:transparent;background:transparent;color:#c7c7d0;padding-left:0}.hero-card{background:linear-gradient(135deg,#2d1225,#16161d 60%);border-color:#5e2748}.hero-card h2{font-size:22px}.hero-card p{font-size:12px;color:#c3a9b9;line-height:1.8}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:15px}.stat{border-top:1px solid #5a3150;padding-top:8px}.stat strong{display:block;font-size:22px;font-weight:500}.stat span{font-size:12px;color:#c2a6b8}.section-head{display:flex;justify-content:space-between;align-items:center;margin:18px 0 9px}.section-head h2{font-size:16px;margin:0}.section-head button{font-size:12px;color:#ef86bc;background:none;border:0}.role-switch{display:flex;background:#202029;border-radius:6px;padding:3px;margin-bottom:14px}.role-switch button{flex:1;border:0;border-radius:4px;padding:7px 4px;background:transparent;color:#9999a6;font-size:12px}.role-switch button.active{background:#3b1830;color:#fff}.role-switch button.active:after{content:' · 当前';color:var(--pink);font-size:12px}.timeline{display:grid;gap:1px}.timeline-row{display:flex;gap:11px;position:relative;padding:8px 0}.timeline-row:before{content:'';position:absolute;left:4px;top:24px;bottom:-9px;border-left:1px solid #3b3b47}.timeline-row:last-child:before{display:none}.timeline-dot{width:9px;height:9px;border-radius:50%;background:#4c4c58;margin-top:5px;z-index:1;flex:none}.timeline-dot.pink{background:var(--pink);box-shadow:0 0 0 3px #ec008c22}.timeline-content{flex:1;display:flex;justify-content:space-between;gap:8px}.timeline-content strong{display:block;font-size:14px}.timeline-content small{display:block;font-size:12px;color:var(--muted)}.task-row{padding:12px 0;border-bottom:1px solid #2a2a34}.task-row:last-child{border:0;padding-bottom:0}.task-row:first-child{padding-top:0}.task-top{display:flex;justify-content:space-between;gap:8px}.task-top strong{font-size:14px}.task-row p{font-size:12px;color:var(--muted);margin:4px 0 9px}.progress{height:4px;background:#292932;border-radius:4px;overflow:hidden}.progress i{display:block;height:100%;background:var(--pink);border-radius:inherit}.progress i.green{background:var(--green)}.task-actions{margin-top:8px;display:flex;gap:7px;align-items:center}.task-actions .portal-button{padding:5px 8px}.upload-name{font-size:12px;color:#d486b3}.form-grid{display:grid;gap:10px}.form-grid label{display:grid;gap:4px;font-size:12px;color:#a9a9b6}.form-grid input,.form-grid textarea,.form-grid select{width:100%;padding:8px;border:1px solid #363640;border-radius:5px;background:#15151b;color:#efeff4;font-size:12px}.form-grid textarea{resize:vertical;min-height:72px}.toggle-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#a9a9b6;padding:9px 0;border-bottom:1px solid #2b2b35}.tab-pills{display:flex;gap:7px;margin-bottom:13px}.tab-pills button{border:0;border-bottom:1px solid transparent;background:transparent;color:#898996;padding:5px 7px;font-size:12px}.tab-pills button.active{color:#fff;border-color:var(--pink)}.schedule-card{border-left:2px solid var(--pink);padding:10px 11px;background:#1d1d25;border-radius:0 6px 6px 0;margin-bottom:8px}.schedule-card h3{margin:0;font-size:14px}.schedule-card p{font-size:12px;color:var(--muted);margin:4px 0 7px}.score{font-size:27px;font-weight:500;color:#fff}.score small{font-size:12px;color:var(--muted);font-weight:400}.appeal-box{background:#251824;border:1px solid #572442;border-radius:6px;padding:11px;margin-top:13px}.appeal-box p{font-size:12px;color:#d7b2c7;margin:0 0 9px}.empty{border:1px dashed #3c3c46;border-radius:7px;padding:20px;text-align:center;color:#858592;font-size:12px}.modal-backdrop{position:fixed;inset:0;background:#000a;display:flex;align-items:flex-end;justify-content:center;z-index:10}.portal-device .modal-backdrop{position:absolute}.drawer{width:min(410px,100%);background:#17171d;border:1px solid #3b3b46;border-bottom:0;border-radius:13px 13px 0 0;padding:20px 17px 27px;max-height:85vh;overflow:auto;box-shadow:0 -20px 80px #0008}.drawer-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.drawer-head h2{font-size:18px;margin:0}.close-button{border:0;background:none;color:#aaaab8;font-size:23px;line-height:1}.notice{padding:9px 10px;border-left:2px solid var(--pink);background:#22141e;color:#c1a8b7;font-size:12px;margin-bottom:11px}.toast{position:fixed;bottom:90px;left:50%;transform:translate(-50%,14px);opacity:0;pointer-events:none;background:#24242d;border:1px solid #4a4a57;border-radius:6px;padding:9px 13px;font-size:12px;color:#f1f1f5;z-index:20;transition:.2s;white-space:nowrap;max-width:95%;overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%,0)}.portal-intro+.portal-device .toast{position:absolute}.file-row{display:flex;gap:8px;align-items:center}.file-row input{flex:1}.detail-list{display:grid;gap:8px}.detail-list li{list-style:none;border-bottom:1px solid var(--line);padding-bottom:8px;font-size:12px;color:var(--text)}.detail-list ul{margin:0;padding:0}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:5px}
@media(max-width:800px){.portal-intro{display:none}.portal-shell{display:block}.portal-device{width:min(410px,100vw);min-height:100vh;margin:auto;border:0;box-shadow:none}.portal-device .portal-main{min-height:calc(100vh - 115px)}}
/* 双主题统一映射，玫红主按钮保留白字。 */
:root{--surface-2:color-mix(in srgb,var(--surface) 94%,var(--ink) 6%)}.portal-intro{background:radial-gradient(circle at 20% 22%,color-mix(in srgb,var(--pink) 11%,var(--bg)) 0,var(--bg) 50%)}.portal-intro .eyebrow,.page-kicker,.section-head button{color:var(--pink)}.portal-links a:hover{color:var(--ink);border-color:var(--pink)}.portal-note{color:var(--muted)}.portal-device{border-color:var(--line);height:100dvh;max-height:940px;min-height:650px;flex:none}.prototype-label{background:var(--surface-2);color:var(--muted)}.label-date{color:var(--muted)}.portal-main{min-height:0;height:calc(100% - 175px);padding-bottom:24px}.portal-nav{background:var(--surface)}.portal-nav button{color:var(--muted)}.portal-nav button.active{color:var(--ink)}.chip{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.chip.pink{background:color-mix(in srgb,var(--pink) 9%,var(--surface));color:var(--pink);border-color:color-mix(in srgb,var(--pink) 26%,var(--line))}.chip.green{background:color-mix(in srgb,var(--green) 9%,var(--surface));color:var(--green)}.chip.amber{background:color-mix(in srgb,var(--amber) 9%,var(--surface));color:var(--amber)}.portal-button{background:var(--surface-2);color:var(--ink);border-color:var(--line)}.portal-button.ghost{color:var(--text)}.hero-card{background:linear-gradient(135deg,color-mix(in srgb,var(--pink) 14%,var(--surface)),var(--surface-2) 70%);border-color:color-mix(in srgb,var(--pink) 30%,var(--line))}.hero-card p,.stat span{color:var(--text)}.stat{border-color:color-mix(in srgb,var(--pink) 25%,var(--line))}.role-switch{background:var(--surface-2)}.role-switch button{color:var(--muted)}.role-switch button.active{background:color-mix(in srgb,var(--pink) 13%,var(--surface));color:var(--ink)}.timeline-row:before,.timeline-dot{border-color:var(--line);background:var(--line)}.timeline-row:before{background:none}.task-row{border-color:var(--line)}.progress{background:var(--line)}.upload-name{color:var(--pink)}.form-grid label,.toggle-row{color:var(--text)}.form-grid input,.form-grid textarea,.form-grid select{background:var(--surface);border-color:var(--line);color:var(--ink)}.toggle-row{border-color:var(--line)}.tab-pills button{color:var(--muted)}.tab-pills button.active{color:var(--ink)}.schedule-card{background:var(--surface-2)}.score{color:var(--ink)}.appeal-box,.notice{background:color-mix(in srgb,var(--pink) 7%,var(--surface));border-color:color-mix(in srgb,var(--pink) 25%,var(--line));color:var(--text)}.appeal-box p{color:var(--text)}.empty{color:var(--muted);border-color:var(--line)}.drawer{background:var(--surface);color:var(--ink);border-color:var(--line)}.close-button{color:var(--muted)}.toast{background:var(--surface-2);color:var(--ink);border-color:var(--line)}.portal-main p{overflow-wrap:anywhere}.portal-main img{max-width:100%}.row-between{display:flex;justify-content:space-between;align-items:center;gap:8px}.people-row{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.people-row span{font-size:12px;color:var(--text);background:var(--surface);border:1px solid var(--line);padding:4px 7px;border-radius:4px}.link-row{display:block;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--text)}.link-row span{float:right;color:var(--pink)}.message{padding:10px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;font-size:12px;margin-bottom:9px}.message.own{border-color:color-mix(in srgb,var(--pink) 25%,var(--line));margin-left:20px}.message small{font-size:12px;color:var(--muted);display:block;margin-bottom:5px}.message-form{display:flex;gap:7px}.message-form input{min-width:0;flex:1;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:5px;padding:9px;font-size:12px}.photo-placeholder{height:120px;background:linear-gradient(140deg,color-mix(in srgb,var(--pink) 17%,var(--surface)),var(--surface));border:1px solid var(--line);border-radius:6px;margin-bottom:10px;display:grid;place-items:center;font-size:36px;color:var(--pink)}.file-input{font-size:12px!important}.file-input::file-selector-button{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);padding:5px;border-radius:4px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}.detail-grid>div{padding:9px;background:var(--surface-2);border:1px solid var(--line);border-radius:5px}.detail-grid small{display:block;color:var(--muted);font-size:12px}.detail-grid strong{font-size:14px}.form-error{color:var(--pink);font-size:12px}.avatar-mark{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:color-mix(in srgb,var(--pink) 12%,var(--surface));color:var(--pink);border:1px solid color-mix(in srgb,var(--pink) 30%,var(--line));font-size:17px}.identity-row{display:flex;gap:11px;align-items:center}.identity-row h2{font-size:19px}.identity-row p{font-size:12px;color:var(--muted);margin:2px 0}.history-item{padding:9px 0;border-bottom:1px solid var(--line);font-size:12px;color:var(--text)}.history-item small{display:block;color:var(--muted);font-size:12px}.portal-card .portal-button+.portal-button{margin-left:5px}
@media(max-width:800px){.portal-device{min-height:0;height:100dvh;max-height:none}.portal-device .portal-main{min-height:0;height:calc(100% - 175px)}}
@media(max-width:375px){.portal-main{padding-left:13px;padding-right:13px}.portal-card{padding:12px}.portal-header{padding-left:15px;padding-right:15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* 手机画布由主区滚动，主题控件与底栏始终占据自身空间。 */
.portal-device{display:flex;flex-direction:column}.prototype-label{display:flex;align-items:center;gap:5px;flex:none;min-height:37px}.prototype-label .label-date{float:none;margin-left:auto;font-size:12px;white-space:nowrap}.portal-header{flex:none}.portal-main,.portal-device .portal-main{height:auto;flex:1;min-height:0;padding-bottom:22px}.portal-nav{position:relative;flex:none;height:68px;padding-top:10px;bottom:auto}.portal-nav button{font-size:12px;min-height:42px}.portal-button{min-height:34px;font-size:14px}.form-grid label{font-size:14px}.form-grid input,.form-grid textarea,.form-grid select{font-size:14px;min-height:38px}.form-grid .selection-field{border:1px solid var(--line);border-radius:5px;color:var(--text);font-size:12px}.form-grid .selection-field label{display:flex;align-items:center;gap:5px;margin:6px 0}.form-grid .selection-field input{width:14px;min-height:0;margin:0}.task-top .chip{flex:none;align-self:flex-start}.task-top strong{overflow-wrap:anywhere}.portal-card,.schedule-card,.drawer{overflow-wrap:anywhere}.modal-backdrop{background:var(--overlay,#0009)}
@media(min-width:801px){.portal-shell{align-items:center}.portal-intro{min-height:100dvh}.portal-device{border-radius:0 0 12px 12px}.portal-main{padding-top:20px}}
