/* 小屋里的四个 2D 内容面板样式：相册 / 平板 / 一体机 / 软木板。
   全部规则限定在 .ov 作用域内；变量沿用 win-desk 的配色，前缀改为 --ov-。 */

@font-face{font-family:'Hand';src:url('/win-desk/assets/fonts/hand.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Marker';src:url('/win-desk/assets/fonts/marker.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Sans SC';src:url('/win-desk/assets/fonts/sans.woff2') format('woff2');font-weight:300 900;font-display:swap}
@font-face{font-family:'Serif SC';src:url('/win-desk/assets/fonts/serif.woff2') format('woff2');font-weight:600;font-display:swap}

.ov{
 --ov-bg:#eef4f1; --ov-paper:#fff; --ov-ink:#22313f; --ov-ink-2:#56667a; --ov-ink-3:#8a97a3;
 --ov-green:#4e9a78; --ov-green-deep:#2f6b53; --ov-green-ink:#3d7d62; --ov-line:#e2eae5; --ov-line-2:#eef2ef;
 --ov-tint-blue:#e4eef8; --ov-tint-green:#e1f2e8; --ov-tint-amber:#fbefd8; --ov-tint-rose:#fae5e7; --ov-tint-teal:#dff1ef;
 --ov-sticky-y:#fff3ad; --ov-sticky-g:#dcf3d3;
 --ov-sans:'Sans SC','PingFang SC','Microsoft YaHei','Noto Sans SC',sans-serif;
 --ov-serif:'Serif SC','Songti SC','Noto Serif SC','SimSun',serif;
 --ov-hand:'Hand','KaiTi','STKaiti','Kaiti SC',cursive;
 --ov-marker:'Marker','Hand','KaiTi','STKaiti',cursive;
 --ov-shadow:0 26px 70px -22px rgba(38,74,64,.34), 0 3px 10px rgba(38,74,64,.08);
 --ov-shadow-s:0 10px 26px -12px rgba(38,74,64,.24);
 --ov-r:18px;

 position:relative;
 width:min(92vw,1180px);
 max-height:min(86vh,760px);
 display:flex;
 flex-direction:column;
 color:var(--ov-ink);
 font:400 14px/1.65 var(--ov-sans);
 -webkit-font-smoothing:antialiased;
 outline:none;
}
.ov,.ov *{box-sizing:border-box}
.ov [hidden]{display:none !important}
.ov img{display:block;max-width:100%}
.ov ul,.ov ol{margin:0;padding:0;list-style:none}
.ov h3,.ov h4,.ov p,.ov figure{margin:0}
.ov b{font-weight:600}
.ov button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:left}
.ov button[disabled]{cursor:default;opacity:.32}
.ov a{color:inherit;text-decoration:none}
.ov :focus-visible{outline:2px solid var(--ov-green);outline-offset:3px;border-radius:6px}
.ov .ov-i{width:1.1em;height:1.1em;flex:none}

/* 通用文字件 */
.ov .ov-hand{font-family:var(--ov-hand);color:var(--ov-green-ink);letter-spacing:.02em;line-height:1.5}
.ov .ov-marker{font-family:var(--ov-marker);line-height:1.1}
.ov .ov-kicker{font-size:11.5px;letter-spacing:.2em;color:var(--ov-ink-3)}
.ov .ov-title{font:600 21px/1.35 var(--ov-serif);color:var(--ov-green-deep)}
.ov .ov-sub{font:600 13px/1.5 var(--ov-sans);color:var(--ov-green-deep);letter-spacing:.06em}
.ov .ov-en{font-size:11.5px;color:var(--ov-ink-3);letter-spacing:.06em}
.ov .ov-meta{font-size:12px;color:var(--ov-ink-3)}
.ov .ov-lead{font-size:14.5px;line-height:1.75;color:var(--ov-ink-2)}
.ov .ov-body{font-size:13px;line-height:1.75;color:var(--ov-ink-2)}
.ov .ov-fineprint{font-size:11px;color:var(--ov-ink-3);margin-top:auto;padding-top:10px}
.ov .ov-list{display:grid;gap:7px}
.ov .ov-list li{position:relative;padding-left:15px;font-size:13px;line-height:1.7;color:var(--ov-ink-2)}
.ov .ov-list li::before{content:'';position:absolute;left:2px;top:.72em;width:5px;height:5px;border-radius:50%;background:var(--ov-green)}
.ov .ov-list b{color:var(--ov-ink)}
.ov .ov-pills{display:flex;flex-wrap:wrap;gap:7px}
.ov .ov-pill{padding:4px 11px;border-radius:999px;background:var(--ov-tint-green);color:var(--ov-green-deep);font-size:12px;white-space:nowrap}
.ov .ov-facts{display:grid;gap:8px}
.ov .ov-facts li{display:grid;grid-template-columns:76px 1fr;gap:10px;align-items:start}
.ov .ov-fact-k{font-size:11.5px;color:var(--ov-green-deep);background:var(--ov-line-2);border-radius:6px;padding:3px 7px;text-align:center}
.ov .ov-fact-v{font-size:12.5px;line-height:1.7;color:var(--ov-ink-2)}
.ov .ov-btn{padding:7px 16px;border-radius:999px;background:rgba(255,255,255,.85);box-shadow:var(--ov-shadow-s);font-size:12.5px;color:var(--ov-ink-2);transition:color .2s,background .2s}
.ov .ov-btn:hover:not([disabled]){color:var(--ov-green-deep);background:#fff}
.ov .ov-btn-main{background:var(--ov-green);color:#fff}
.ov .ov-btn-main:hover:not([disabled]){background:var(--ov-green-deep);color:#fff}
.ov .ov-link{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:8px 16px;border-radius:999px;background:var(--ov-tint-green);color:var(--ov-green-deep);font-size:12.5px;transition:background .2s}
.ov .ov-link:hover{background:#d2ecdd}
.ov .ov-link-out{background:var(--ov-green);color:#fff}
.ov .ov-link-out:hover{background:var(--ov-green-deep)}
.ov .ov-slot{display:grid;place-items:center;border:1.5px dashed #c6d6cd;border-radius:10px;background:rgba(255,255,255,.5);aspect-ratio:3/2;font-size:13px}
.ov .ov-slot .ov-hand{color:var(--ov-ink-3)}

/* 内部入场微动效 */
@keyframes ov-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes ov-pop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.ov .ov-page.is-in .ov-sheet>*,
.ov .ov-pad-body.is-in .ov-pad-scroll>*{animation:ov-up .3s both}
.ov .is-in .ov-sheet>*:nth-child(2),.ov .is-in .ov-pad-scroll>*:nth-child(2){animation-delay:.05s}
.ov .is-in .ov-sheet>*:nth-child(3),.ov .is-in .ov-pad-scroll>*:nth-child(3){animation-delay:.1s}
.ov .is-in .ov-sheet>*:nth-child(4),.ov .is-in .ov-pad-scroll>*:nth-child(4){animation-delay:.15s}
.ov .is-in .ov-sheet>*:nth-child(n+5),.ov .is-in .ov-pad-scroll>*:nth-child(n+5){animation-delay:.2s}
.ov .ov-win-layer.is-in .ov-win{animation:ov-pop .28s both}

/* =========================================================
   1. 相册 —— 项目作品
   ========================================================= */
.ov-album{height:min(86vh,760px);overflow:hidden}
.ov-album .ov-stage{flex:1;min-height:0;display:flex;align-items:stretch;justify-content:center}
.ov-album .ov-book{
 position:relative;flex:1;min-width:0;
 display:grid;grid-template-columns:1fr 1fr;
 perspective:2400px;border-radius:8px;
 filter:drop-shadow(0 30px 44px rgba(34,60,52,.34));
}
.ov-album .ov-page{
 position:relative;overflow:auto;padding:36px 40px 66px;display:flex;flex-direction:column;
 background:linear-gradient(#fffefb,#fbf8f1);
 box-shadow:inset 0 0 0 1px rgba(200,190,170,.35);
}
.ov-album .ov-page-l{border-radius:8px 0 0 8px;
 background-image:linear-gradient(90deg,rgba(90,80,60,.10) 0,rgba(90,80,60,0) 9%),linear-gradient(270deg,rgba(90,80,60,.16) 0,rgba(90,80,60,0) 7%),linear-gradient(#fffefb,#fbf8f1)}
.ov-album .ov-page-r{border-radius:0 8px 8px 0;
 background-image:linear-gradient(270deg,rgba(90,80,60,.10) 0,rgba(90,80,60,0) 9%),linear-gradient(90deg,rgba(90,80,60,.16) 0,rgba(90,80,60,0) 7%),linear-gradient(#fffefb,#fbf8f1)}
.ov-album .ov-spine{position:absolute;left:50%;top:0;bottom:0;width:18px;transform:translateX(-50%);
 background:linear-gradient(90deg,rgba(60,50,35,.02),rgba(60,50,35,.18) 45%,rgba(60,50,35,.22) 50%,rgba(60,50,35,.18) 55%,rgba(60,50,35,.02));
 pointer-events:none;z-index:3}
.ov-album .ov-sheet{display:flex;flex-direction:column;gap:13px;flex:1 0 auto}
.ov-album .ov-leaf{position:absolute;top:0;bottom:0;left:50%;width:50%;z-index:4;
 transform-style:preserve-3d;transform-origin:left center;
 transition:transform .62s cubic-bezier(.42,.02,.24,1)}
.ov-album .ov-leaf.is-left{left:0;transform-origin:right center}
.ov-album .ov-leaf-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.ov-album .ov-leaf-back{transform:rotateY(180deg)}
.ov-album .ov-booknav{position:absolute;left:0;right:0;bottom:0;height:56px;z-index:6;
 display:flex;align-items:center;justify-content:space-between;padding:0 30px;pointer-events:none}
.ov-album .ov-booknav>*{pointer-events:auto}
.ov-album .ov-pager{display:flex;align-items:center;gap:12px;padding:5px 12px;border-radius:999px;background:rgba(255,255,255,.7)}
.ov-album .ov-dots{display:flex;gap:7px}
.ov-album .ov-dot{width:8px;height:8px;border-radius:50%;background:#d3ddd6;transition:background .2s,transform .2s}
.ov-album .ov-dot[aria-current=true]{background:var(--ov-green);transform:scale(1.25)}
.ov-album .ov-count{font-size:11.5px;color:var(--ov-ink-3);letter-spacing:.08em}

/* 封面 */
/* 封面整幅铺满纸面：绝对定位避开纸张内边距，避免负边距把内容撑出滚动。 */
.ov-album .ov-cover{position:absolute;inset:0;display:grid;place-items:center;border-radius:8px 0 0 8px;overflow:hidden}
.ov-album .ov-cover-cloth{position:absolute;inset:0;
 background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.055) 0 1px,transparent 1px 3px),
  repeating-linear-gradient(0deg,rgba(0,0,0,.05) 0 1px,transparent 1px 3px),
  linear-gradient(150deg,#7fa98f,#5c8c74 45%,#4a7a63);
 box-shadow:inset 0 0 70px rgba(30,60,48,.4)}
.ov-album .ov-cover-label{position:relative;padding:26px 30px;border-radius:4px;text-align:center;
 background:linear-gradient(#fdfaf1,#f3ece0);box-shadow:0 12px 26px -14px rgba(20,40,32,.6);transform:rotate(-1.2deg)}
.ov-album .ov-cover-name{font:600 24px/1.4 var(--ov-serif);color:#35594a;letter-spacing:.04em}
.ov-album .ov-cover-sub{margin-top:8px;font-size:17px}

/* 目录 */
.ov-album .ov-toc{display:grid;gap:10px;margin-top:4px}
.ov-album .ov-toc li{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:baseline;
 padding-bottom:8px;border-bottom:1px dashed var(--ov-line)}
.ov-album .ov-toc-no{font:600 13px/1 var(--ov-serif);color:var(--ov-green)}
.ov-album .ov-toc-name{font-size:14px;color:var(--ov-ink)}
.ov-album .ov-toc-tag{font-size:11px;color:var(--ov-ink-3)}

/* 作品题签（文字题签，非海报） */
.ov-album .ov-sheet-plate{justify-content:center;align-items:center;gap:14px}
.ov-album .ov-plate{position:relative;width:min(100%,300px);aspect-ratio:3/4;border-radius:8px;overflow:hidden;
 display:flex;flex-direction:column;justify-content:flex-end;gap:8px;padding:22px 20px 18px;color:#fff;
 box-shadow:0 18px 34px -18px rgba(24,44,38,.7);transform:rotate(-1deg)}
.ov-album .ov-plate-0{background:linear-gradient(155deg,#2f6b53,#4e9a78 55%,#8fc2a6)}
.ov-album .ov-plate-1{background:linear-gradient(155deg,#33506e,#4b7ba6 55%,#9cc2dd)}
.ov-album .ov-plate-2{background:linear-gradient(155deg,#6b4a2f,#a4712a 55%,#ddb877)}
.ov-album .ov-plate-grain{position:absolute;inset:0;pointer-events:none;
 background:
  repeating-linear-gradient(60deg,rgba(255,255,255,.07) 0 1px,transparent 1px 5px),
  repeating-linear-gradient(-30deg,rgba(0,0,0,.06) 0 1px,transparent 1px 4px);
 mix-blend-mode:overlay}
.ov-album .ov-plate-kicker{position:relative;font-size:11px;letter-spacing:.26em;color:rgba(255,255,255,.82)}
.ov-album .ov-plate-title{position:relative;font-size:34px;letter-spacing:.02em;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.25)}
.ov-album .ov-plate-stat{position:relative;font-size:12.5px;color:rgba(255,255,255,.9)}
.ov-album .ov-plate-foot{position:relative;margin-top:4px;font-size:10.5px;color:rgba(255,255,255,.7);text-align:right}
.ov-album .ov-plate-cap{font-size:11px;color:var(--ov-ink-3)}

.ov-album .ov-circle{align-self:flex-start;display:inline-block;padding:.36em 1em;font-size:16px;
 border:2px solid var(--ov-green);border-radius:48% 52% 45% 55%/62% 40% 60% 38%;transform:rotate(-1.6deg)}
.ov-album .ov-block{display:grid;gap:9px}
.ov-album .ov-note-r{margin-top:auto;font-size:16px;text-align:right}
.ov-album .ov-big-note{font-size:21px;margin:6px 0 10px}

/* =========================================================
   2. 平板 —— 教育背景 / 校园经历 / 推文精选
   ========================================================= */
.ov-tablet{height:min(86vh,760px);overflow:hidden}
.ov-tablet .ov-glass{
 flex:1;min-height:0;display:flex;flex-direction:column;padding:20px;border-radius:46px;
 background:linear-gradient(150deg,rgba(255,255,255,.62),rgba(255,255,255,.34));
 border:1px solid rgba(255,255,255,.66);
 -webkit-backdrop-filter:blur(20px) saturate(1.25);backdrop-filter:blur(20px) saturate(1.25);
 box-shadow:0 40px 90px -36px rgba(38,74,64,.45),0 0 64px rgba(255,255,255,.5) inset;
}
.ov-tablet .ov-pad{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 14px 14px 24px;border-radius:30px;
 background:linear-gradient(160deg,#454b52,#2c3137 60%,#23272c);
 box-shadow:0 18px 40px -20px rgba(15,25,22,.7),inset 0 1px 0 rgba(255,255,255,.18)}
.ov-tablet .ov-pad-cam{position:absolute;left:10px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;
 background:radial-gradient(circle at 35% 35%,#6c7783,#1a1e22)}
.ov-tablet .ov-pad-screen{flex:1;min-height:0;display:flex;flex-direction:column;border-radius:12px;overflow:hidden;background:var(--ov-paper)}
.ov-tablet .ov-statusbar{display:flex;align-items:center;justify-content:space-between;padding:5px 16px 3px;
 font-size:11.5px;color:var(--ov-ink-2);background:#fafcfb}
.ov-tablet .ov-clock{font-weight:600;letter-spacing:.04em}
.ov-tablet .ov-status-right{display:flex;align-items:center;gap:7px;color:var(--ov-ink-2)}
.ov-tablet .ov-wifi{width:15px;height:13px}
.ov-tablet .ov-batt{width:22px;height:14px}
.ov-tablet .ov-seg{display:flex;gap:3px;align-self:center;margin:6px 0 4px;padding:3px;border-radius:10px;background:var(--ov-line-2)}
.ov-tablet .ov-seg-btn{padding:6px 20px;border-radius:8px;font-size:12.5px;color:var(--ov-ink-2);transition:background .2s,color .2s}
.ov-tablet .ov-seg-btn[aria-selected=true]{background:#fff;color:var(--ov-green-deep);font-weight:600;box-shadow:0 1px 3px rgba(40,60,52,.16)}
.ov-tablet .ov-pad-body{flex:1;min-height:0;overflow:auto;padding:12px 22px 24px;background:
 radial-gradient(70% 50% at 20% 0,#f2f8f5 0,transparent 70%),#fff}
.ov-tablet .ov-pad-scroll{display:flex;flex-direction:column;gap:16px;min-height:100%}

.ov-tablet .ov-edu{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ov-tablet .ov-school{display:flex;flex-direction:column;gap:9px;padding:18px;border-radius:16px;
 background:#fff;box-shadow:var(--ov-shadow-s)}
.ov-tablet .ov-school-top{display:flex;gap:13px;align-items:center}
.ov-tablet .ov-logo{width:56px;height:56px;object-fit:contain;border-radius:10px;background:#f6f9f7;padding:4px;flex:none}
.ov-tablet .ov-pad-note{margin-top:auto;font-size:16px;text-align:right}

.ov-tablet .ov-role{padding:18px;border-radius:16px;background:var(--ov-tint-green);display:grid;gap:9px}
.ov-tablet .ov-campus{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.ov-tablet .ov-ccard{display:grid;gap:10px;padding:16px;border-radius:16px;background:#fff;box-shadow:var(--ov-shadow-s);
 border-top:3px solid var(--ov-green)}
.ov-tablet .ov-tone-blue{border-top-color:#3e6ea3}
.ov-tablet .ov-tone-teal{border-top-color:#2f7c74}
.ov-tablet .ov-tone-ochre{border-top-color:#a4712a}
.ov-tablet .ov-ccard-top{display:flex;gap:11px;align-items:flex-start}
.ov-tablet .ov-ccard-ico{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;flex:none;
 background:var(--ov-tint-green);color:var(--ov-green-deep)}
.ov-tablet .ov-tone-blue .ov-ccard-ico{background:var(--ov-tint-blue);color:#3e6ea3}
.ov-tablet .ov-tone-teal .ov-ccard-ico{background:var(--ov-tint-teal);color:#2f7c74}
.ov-tablet .ov-tone-ochre .ov-ccard-ico{background:var(--ov-tint-amber);color:#a4712a}
.ov-tablet .ov-ccard-ico .ov-i{width:19px;height:19px}
.ov-tablet .ov-ccard-title{font:600 15px/1.4 var(--ov-sans);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ov-tablet .ov-stage-tag{font:400 10.5px/1 var(--ov-sans);color:var(--ov-ink-3);border:1px solid var(--ov-line);border-radius:999px;padding:3px 7px}
.ov-tablet .ov-tagline{font-size:14px}
.ov-tablet .ov-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ov-tablet .ov-strip img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;box-shadow:var(--ov-shadow-s)}
.ov-tablet .ov-strip figcaption{margin-top:6px;font-size:11.5px;color:var(--ov-ink-3);text-align:center}

.ov-tablet .ov-post{display:grid;grid-template-columns:1fr minmax(240px,320px) 1fr;gap:16px;align-items:start;
 padding:16px;border-radius:18px;background:linear-gradient(160deg,rgba(255,255,255,.8),rgba(240,247,244,.7));
 border:1px solid rgba(255,255,255,.8);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--ov-shadow-s)}
.ov-tablet .ov-post-side{display:flex;flex-direction:column;gap:9px;padding:10px 4px}
.ov-tablet .ov-post-hand{font-size:17px}
.ov-tablet .ov-post-title{font:600 16px/1.5 var(--ov-serif);color:var(--ov-green-deep)}
.ov-tablet .ov-credit{font-size:12px;color:var(--ov-ink-2);background:var(--ov-line-2);border-radius:8px;padding:6px 9px}
.ov-tablet .ov-post-shot{max-height:360px;overflow-y:auto;border-radius:10px;background:#fff;
 box-shadow:0 12px 30px -16px rgba(38,74,64,.5);border:1px solid var(--ov-line)}
.ov-tablet .ov-post-shot img{width:100%;height:auto}

/* =========================================================
   3. 一体机 —— 项目经历
   ========================================================= */
.ov-mac{height:min(86vh,760px);overflow:hidden;align-items:center}
.ov-mac .ov-imac{width:100%;height:100%;display:flex;flex-direction:column;align-items:center}
.ov-mac .ov-imac-screen{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;overflow:hidden;
 padding:12px;border-radius:16px 16px 4px 4px;
 background:linear-gradient(165deg,#fdfefe,#eef2f5);
 box-shadow:0 30px 70px -28px rgba(38,74,64,.5),inset 0 1px 0 #fff}
.ov-mac .ov-menubar{display:flex;align-items:center;gap:16px;padding:0 12px;height:26px;flex:none;
 white-space:nowrap;overflow:hidden;
 border-radius:8px 8px 0 0;background:rgba(255,255,255,.72);font-size:11.5px;color:#3c4a55;
 -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.ov-mac .ov-menu-apple{width:9px;height:11px;border-radius:50% 50% 45% 45%;background:#3c4a55;opacity:.8}
.ov-mac .ov-menu-app{font-weight:600}
.ov-mac .ov-menu-time{margin-left:auto;letter-spacing:.04em}
.ov-mac .ov-desktop{position:relative;flex:1;min-height:0;overflow:auto;padding:22px;border-radius:0 0 8px 8px;
 background:linear-gradient(165deg,#d9f4ec,#c9e6fa 52%,#b6d6f6)}
.ov-mac .ov-desk-icons{display:grid;grid-template-columns:repeat(4,minmax(0,132px));gap:16px}
.ov-mac .ov-dicon{display:grid;justify-items:center;gap:7px;padding:10px 6px;border-radius:12px;text-align:center;
 transition:background .2s,transform .2s}
.ov-mac .ov-dicon:hover{background:rgba(255,255,255,.5);transform:translateY(-2px)}
.ov-mac .ov-dicon-art{display:grid;place-items:center;width:62px;height:62px;border-radius:15px;
 box-shadow:0 10px 20px -10px rgba(30,60,80,.55),inset 0 1px 0 rgba(255,255,255,.7)}
.ov-mac .ov-dicon-art .ov-i{width:30px;height:30px}
/* 桌面上的文件夹画成真的文件夹形状，三个应用则是圆角磁贴。 */
.ov-mac .ov-dicon-research{background:none;box-shadow:none}
.ov-mac .ov-dicon-research svg{width:62px;height:62px;fill:#6db3ec;stroke:#4e97d6;stroke-width:1;
 filter:drop-shadow(0 8px 12px rgba(30,70,110,.35))}
.ov-mac .ov-dicon-folder{background:linear-gradient(160deg,#eaf3ff,#c6dcf5);color:#3e6ea3}
.ov-mac .ov-dicon-canvas{background:linear-gradient(160deg,#e8fff4,#bfe9d3);color:#2f6b53}
.ov-mac .ov-dicon-cube{background:linear-gradient(160deg,#fff4e0,#f2d7a8);color:#a4712a}
.ov-mac .ov-dicon-name{font-size:12px;color:#20313d;background:rgba(255,255,255,.6);border-radius:6px;padding:2px 7px;line-height:1.4}
.ov-mac .ov-dicon-sub{font-size:10px;color:#4a6172;letter-spacing:.06em}
.ov-mac .ov-desk-note{margin-top:18px;font-size:17px}

.ov-mac .ov-win-layer{position:absolute;inset:18px;display:grid;place-items:center;z-index:5}
.ov-mac .ov-win{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;border-radius:12px;
 background:#fff;box-shadow:0 34px 70px -24px rgba(20,50,70,.55),0 0 0 1px rgba(255,255,255,.7)}
.ov-mac .ov-win-bar{flex:none;display:flex;align-items:center;gap:12px;height:36px;padding:0 14px;
 background:linear-gradient(#fbfcfd,#eef1f4);border-bottom:1px solid var(--ov-line)}
.ov-mac .ov-lights{display:flex;gap:7px}
.ov-mac .ov-light{width:11px;height:11px;border-radius:50%;display:block}
.ov-mac .ov-light-r{background:#ff5f57}
.ov-mac .ov-light-y{background:#febc2e}
.ov-mac .ov-light-g{background:#28c840}
.ov-mac .ov-light-r:hover{background:#e0443c}
.ov-mac .ov-win-title{font-size:12.5px;color:var(--ov-ink-2);font-weight:600}
.ov-mac .ov-win-body{flex:1;min-height:0;display:grid}
.ov-mac .ov-win-finder .ov-win-body{grid-template-columns:186px 1fr}
.ov-mac .ov-finder-side{padding:14px 12px;background:#f6f8fa;border-right:1px solid var(--ov-line);overflow:auto;display:grid;align-content:start;gap:5px}
.ov-mac .ov-side-h{font-size:10.5px;letter-spacing:.16em;color:var(--ov-ink-3);margin-top:8px}
.ov-mac .ov-side-item{display:block;width:100%;padding:6px 9px;border-radius:7px;font-size:12px;color:var(--ov-ink-2);
 overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-mac .ov-side-item.is-on{background:var(--ov-tint-green);color:var(--ov-green-deep)}
.ov-mac .ov-side-item:hover{background:var(--ov-line-2)}
.ov-mac .ov-finder-grid{overflow:auto;padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:16px;align-content:start}
.ov-mac .ov-rcard{display:grid;gap:9px;align-content:start;padding:16px;border-radius:14px;background:#fff;
 box-shadow:var(--ov-shadow-s);border:1px solid var(--ov-line-2)}
.ov-mac .ov-rcard.is-on{border-color:var(--ov-green);box-shadow:var(--ov-shadow)}
.ov-mac .ov-rshot{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:10px}
/* 科研卡的 2×2 实拍图：切片图 / 原料 / 试验池 / 幼体，左下角一枚小图注 */
.ov-mac .ov-rgal{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;list-style:none}
/* 纯展示窗口（MC-Print）：右栏两张实拍上下平分栏高，不出现滚动条 */
.ov-mac .ov-win-gallery .ov-app-right{overflow:hidden}
.ov-mac .ov-rgal-col{flex:1;min-height:0;grid-template-columns:1fr;grid-template-rows:1fr 1fr;gap:12px}
.ov-mac .ov-win-gallery .ov-rgal li{aspect-ratio:auto;min-height:0}
/* 左栏文字下面补空的那张：占满剩余高度 */
.ov-mac .ov-win-gallery .ov-app-left{grid-template-rows:auto auto auto auto minmax(0,1fr);overflow:hidden}
.ov-mac .ov-rgal-fill{grid-template-columns:1fr;min-height:0;align-self:stretch}
.ov-mac .ov-rgal-fill li{height:100%}
.ov-mac .ov-win-gallery .ov-fineprint{margin-top:0;flex:none}
.ov-mac .ov-rgal li{position:relative;aspect-ratio:3/2;overflow:hidden;border-radius:10px;background:#eef1f3}
.ov-mac .ov-rgal img{width:100%;height:100%;object-fit:cover;display:block}
.ov-mac .ov-rcap{position:absolute;left:8px;bottom:8px;max-width:calc(100% - 16px);padding:2px 8px;border-radius:999px;
 font-size:10.5px;line-height:1.5;color:#fff;background:rgba(16,38,30,.52);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-mac .ov-rtitle{font:600 15px/1.5 var(--ov-sans);color:var(--ov-ink)}
.ov-mac .ov-win-app .ov-win-body{grid-template-columns:1fr 1fr}
.ov-mac .ov-app-left{padding:20px;display:grid;gap:11px;align-content:start;overflow:auto;background:#fbfdfc}
.ov-mac .ov-app-right{padding:20px;display:flex;flex-direction:column;gap:12px;overflow:auto;border-left:1px solid var(--ov-line)}
.ov-mac .ov-checks{display:grid;gap:9px}
.ov-mac .ov-checks li{display:flex;gap:9px;align-items:flex-start;font-size:13px;line-height:1.7;color:var(--ov-ink-2)}
.ov-mac .ov-check{width:16px;height:16px;margin-top:3px;color:var(--ov-green);stroke-width:2.2}
.ov-mac .ov-tabs{display:flex;gap:4px;padding:3px;border-radius:10px;background:var(--ov-line-2)}
.ov-mac .ov-tab{flex:1;padding:6px 10px;border-radius:8px;font-size:12px;text-align:center;color:var(--ov-ink-2)}
.ov-mac .ov-tab[aria-selected=true]{background:#fff;color:var(--ov-green-deep);font-weight:600;box-shadow:0 1px 3px rgba(40,60,52,.14)}
.ov-mac .ov-steps{display:grid;gap:9px;counter-reset:ov-step}
.ov-mac .ov-steps li{position:relative;padding-left:26px;font-size:13px;line-height:1.7;color:var(--ov-ink-2)}
.ov-mac .ov-steps li::before{counter-increment:ov-step;content:counter(ov-step);position:absolute;left:0;top:2px;
 width:18px;height:18px;border-radius:50%;background:var(--ov-tint-green);color:var(--ov-green-deep);
 font-size:10.5px;line-height:18px;text-align:center}
.ov-mac .ov-demo-link{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;
 background:var(--ov-green-deep);color:#fff;font:600 13px/1.3 var(--ov-sans);text-decoration:none}
.ov-mac .ov-demo-link:hover{background:var(--ov-green)}
.ov-mac .ov-demo-link+.ov-fineprint{margin-top:0}
/* 真实运行的程序窗口：iframe 铺满，说明抽屉盖在右侧 */
.ov-mac .ov-win-live .ov-win-title{display:inline-flex;align-items:center;gap:7px}
.ov-mac .ov-win-live-dot{width:7px;height:7px;border-radius:50%;background:#c9d2da;transition:background .3s}
.ov-mac .ov-win-live.is-ready .ov-win-live-dot{background:#28c840;box-shadow:0 0 0 3px rgba(40,200,64,.18)}
.ov-mac .ov-win-live-tag{font-size:10.5px;font-weight:500;color:var(--ov-ink-3);letter-spacing:.08em}
.ov-mac .ov-win-tools{margin-left:auto;display:flex;gap:6px}
.ov-mac .ov-win-tool{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border-radius:7px;
 font:500 11.5px/1 var(--ov-sans);color:var(--ov-ink-2);background:#fff;border:1px solid var(--ov-line);text-decoration:none;cursor:pointer}
.ov-mac .ov-win-tool:hover{border-color:var(--ov-green);color:var(--ov-green-deep)}
.ov-mac .ov-win-tool[aria-expanded=true]{background:var(--ov-tint-green);border-color:var(--ov-green);color:var(--ov-green-deep)}
/* overflow:clip 而不是 hidden：缩放前的 iframe 盒子比窗口大，hidden 会让 iframe 内的 focus/scrollIntoView 把整个窗口滚偏 */
.ov-mac .ov-live-body{display:block;position:relative;background:#f5f2eb;overflow:clip}
/* 屏幕 1600×900 后窗口内有 1564px 宽，演示程序（最窄约 1270px）按原始像素直接跑，不再缩放 */
.ov-mac .ov-live-frame{position:absolute;left:0;top:0;width:100%;height:100%;
 border:0;display:block;background:#fff;opacity:0;transition:opacity .4s}
.ov-mac .ov-win-live.is-ready .ov-live-frame{opacity:1}
.ov-mac .ov-live-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;
 font-size:13px;color:var(--ov-ink-3);transition:opacity .3s}
.ov-mac .ov-win-live.is-ready .ov-live-loading{opacity:0;pointer-events:none}
.ov-mac .ov-live-spin{width:16px;height:16px;border-radius:50%;border:2px solid var(--ov-line);border-top-color:var(--ov-green);animation:ov-spin .9s linear infinite}
@keyframes ov-spin{to{transform:rotate(360deg)}}
.ov-mac .ov-live-info{position:absolute;top:0;right:0;bottom:0;width:330px;padding:22px 22px 18px;overflow:auto;
 display:grid;gap:11px;align-content:start;background:rgba(255,255,255,.96);border-left:1px solid var(--ov-line);
 box-shadow:-24px 0 48px -32px rgba(20,50,70,.45)}
.ov-mac .ov-live-info .ov-rtitle small{font:500 11px/1 var(--ov-sans);color:var(--ov-ink-3);letter-spacing:.06em;margin-left:4px}
.ov-mac .ov-live-info-close{margin-top:8px;text-align:left;font-size:17px;color:var(--ov-green-deep)}
.ov-mac .ov-live-info-close:hover{text-decoration:underline}
.ov-mac .ov-imac-chin{flex:none;width:100%;height:52px;display:grid;place-items:center;
 border-radius:0 0 16px 16px;background:linear-gradient(#f3f6f8,#e4e9ee);
 box-shadow:0 14px 24px -18px rgba(30,60,80,.6),inset 0 1px 0 #fff}
.ov-mac .ov-imac-logo{width:26px;height:8px;border-radius:999px;background:#c3ccd4}
.ov-mac .ov-imac-neck{flex:none;width:110px;height:24px;background:linear-gradient(#e4e9ee,#d3dae1)}
.ov-mac .ov-imac-foot{flex:none;width:260px;height:9px;border-radius:0 0 12px 12px;
 background:linear-gradient(#d3dae1,#c0c9d1);box-shadow:0 14px 26px -12px rgba(30,60,80,.45)}

/* =========================================================
   4. 软木板 —— 实习经历
   ========================================================= */
/* 板子自己滚动，这样木框的落地阴影不会被面板裁掉。 */
.ov-board{overflow:visible}
.ov-board .ov-cork{
 position:relative;isolation:isolate;flex:1;min-height:0;overflow:auto;padding:34px 34px 30px;
 border:16px solid transparent;border-radius:16px;
 background:
  radial-gradient(circle at 18% 22%,rgba(255,255,255,.14) 0 2px,transparent 3px) 0 0/19px 19px padding-box,
  radial-gradient(circle at 62% 74%,rgba(80,48,18,.13) 0 2px,transparent 3px) 0 0/27px 27px padding-box,
  repeating-radial-gradient(circle at 50% 50%,rgba(120,72,28,.07) 0 2px,rgba(255,240,215,.06) 2px 4px) 0 0/140px 140px padding-box,
  linear-gradient(160deg,#dcae72,#cb9857 55%,#bf8a49) padding-box,
  repeating-linear-gradient(112deg,#b27f45 0 5px,#a4723a 5px 10px,#956530 10px 15px) border-box;
 box-shadow:0 34px 70px -26px rgba(52,38,18,.55),inset 0 2px 10px rgba(90,56,22,.28);
}
.ov-board .ov-noise{position:absolute;inset:0;width:100%;height:100%;border-radius:2px;
 opacity:.16;mix-blend-mode:multiply;pointer-events:none;z-index:0}
.ov-board .ov-pinned{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:start}
.ov-board .ov-pinwrap{perspective:1600px;animation:ov-up .34s both}
.ov-board .ov-pinwrap:nth-child(2){animation-delay:.08s}
.ov-board .ov-pinwrap:nth-child(3){animation-delay:.16s}
.ov-board .ov-pinwrap.is-front{z-index:30}
.ov-board .ov-flip{position:relative;cursor:pointer;transform-style:preserve-3d;transform:rotate(var(--ov-tilt,0deg));
 transition:transform .58s cubic-bezier(.3,.7,.25,1)}
.ov-board .ov-face{position:relative;display:flex;flex-direction:column;gap:8px;width:100%;
 padding:26px 18px 18px;border-radius:5px;background:linear-gradient(#fffdf7,#f7f3e9);
 box-shadow:0 16px 30px -16px rgba(60,40,16,.7),0 1px 0 rgba(255,255,255,.7) inset;
 backface-visibility:hidden;-webkit-backface-visibility:hidden}
.ov-board .ov-face-back{position:absolute;inset:0;overflow:auto;transform:rotateY(180deg);
 background:linear-gradient(#fffefa,#f2f6f1)}
.ov-board .ov-flip.is-open{z-index:30}
.ov-board .ov-flip.is-open .ov-face-front{pointer-events:none}
.ov-board .ov-flip.is-open .ov-face{box-shadow:0 34px 60px -22px rgba(50,32,12,.75)}
.ov-board .ov-pin{position:absolute;left:50%;top:-11px;width:19px;height:19px;margin-left:-9.5px;border-radius:50%;
 background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.85),transparent 52%),var(--ov-pin-c,#d9604f);
 box-shadow:0 4px 7px rgba(60,40,16,.45)}
.ov-board .ov-pin-r{--ov-pin-c:#d9604f}
.ov-board .ov-pin-g{--ov-pin-c:#5ea982}
.ov-board .ov-pin-b{--ov-pin-c:#5b8fc2}
.ov-board .ov-pin-y{--ov-pin-c:#e8b84b}
.ov-board .ov-card-org{font:600 15px/1.45 var(--ov-serif);color:var(--ov-green-deep)}
.ov-board .ov-card-title{font-size:13px;color:var(--ov-ink)}
.ov-board .ov-card-period{font-size:11.5px;color:var(--ov-ink-3);letter-spacing:.04em}
.ov-board .ov-card-short{font-size:12.5px;line-height:1.7;color:var(--ov-ink-2)}
.ov-board .ov-face .ov-slot{margin-top:auto;background:rgba(255,255,255,.65)}
.ov-board .ov-back-note{margin-top:auto;font-size:15px;text-align:right}
.ov-board .ov-memo{position:relative;z-index:1;width:210px;margin:26px 0 0 auto;padding:20px 18px 18px;border-radius:3px;
 background:linear-gradient(180deg,#fff7c2,var(--ov-sticky-y));transform:rotate(2.4deg);
 box-shadow:0 14px 26px -14px rgba(60,44,16,.6)}
.ov-board .ov-memo-btn{display:block;width:100%;font-size:17px;line-height:1.5;color:#4d6b3f}

/* =========================================================
   响应式：< 900px
   ========================================================= */
@media (max-width:899px){
 .ov:not(.as-screen){font-size:13.5px}
 .ov-album{height:auto;max-height:min(86vh,760px);overflow:auto}
 .ov-album .ov-stage{display:block}
 .ov-album .ov-book{grid-template-columns:1fr;height:auto;perspective:none}
 /* 单列时纸张不再被网格拉伸，而封面是绝对定位的，所以给页面兜一个高度。 */
 .ov-album .ov-page{overflow:visible;padding:24px 22px;border-radius:8px;min-height:300px}
 .ov-album .ov-page-l,.ov-album .ov-page-r{background-image:linear-gradient(#fffefb,#fbf8f1)}
 .ov-album .ov-page-r{padding-bottom:70px}
 .ov-album .ov-spine,.ov-album .ov-leaf{display:none}
 .ov-album .ov-booknav{position:sticky;bottom:0;padding:0 14px;background:linear-gradient(rgba(251,248,241,0),rgba(251,248,241,.95) 40%)}
 .ov-album .ov-sheet{flex:0 0 auto}

 .ov-tablet{height:min(86vh,760px)}
 .ov-tablet .ov-glass{padding:12px;border-radius:32px}
 .ov-tablet .ov-pad{padding:22px 12px 12px;border-radius:24px}
 .ov-tablet .ov-pad-cam{left:50%;top:10px;margin-left:-3.5px;margin-top:0}
 .ov-tablet .ov-seg-btn{padding:6px 12px}
 .ov-tablet .ov-pad-body{padding:10px 12px 18px}
 .ov-tablet .ov-edu,.ov-tablet .ov-campus,.ov-tablet .ov-strip{grid-template-columns:1fr}
 .ov-tablet .ov-post{grid-template-columns:1fr}
 .ov-tablet .ov-post-shot{max-height:300px}

 .ov-mac:not(.as-screen){height:auto;max-height:min(86vh,760px);overflow:auto}
 .ov-mac:not(.as-screen) .ov-menubar{gap:10px}
 .ov-mac:not(.as-screen) .ov-menu-item{display:none}
 .ov-mac:not(.as-screen) .ov-imac-screen{padding:8px}
 .ov-mac:not(.as-screen) .ov-desktop{padding:14px}
 .ov-mac:not(.as-screen) .ov-desk-icons{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ov-mac:not(.as-screen) .ov-win-layer{position:static;inset:auto;margin-top:16px}
 .ov-mac:not(.as-screen) .ov-win{height:auto}
 .ov-mac:not(.as-screen) .ov-win-finder .ov-win-body,.ov-mac:not(.as-screen) .ov-win-app .ov-win-body,
 .ov-mac:not(.as-screen) .ov-finder-grid{grid-template-columns:1fr}
 .ov-mac:not(.as-screen) .ov-finder-side{border-right:0;border-bottom:1px solid var(--ov-line)}
 .ov-mac:not(.as-screen) .ov-app-right{border-left:0;border-top:1px solid var(--ov-line)}
 .ov-mac:not(.as-screen) .ov-imac-neck,.ov-mac:not(.as-screen) .ov-imac-foot{display:none}

 .ov-board .ov-cork{padding:24px 18px;border-width:12px}
 .ov-board .ov-pinned{grid-template-columns:1fr;gap:26px}
 .ov-board .ov-memo{width:100%;margin-left:0}
}

/* =========================================================
   减少动态效果
   ========================================================= */
@keyframes ov-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){
 /* 3D 翻页与翻卡全部关掉，改成淡入淡出。 */
 .ov .is-in .ov-sheet>*,.ov .is-in .ov-pad-scroll>*,
 .ov .ov-win-layer.is-in .ov-win,.ov-board .ov-pinwrap{
  animation:ov-fade .2s both !important;animation-delay:0s !important}
 .ov-album .ov-book{perspective:none}
 .ov-album .ov-leaf{display:none}
 .ov-board .ov-pinwrap{perspective:none}
 .ov-board .ov-flip{transition:transform .2s linear}
 .ov-board .ov-face{backface-visibility:visible;-webkit-backface-visibility:visible;transition:opacity .2s}
 .ov-board .ov-face-back{transform:none;opacity:0;pointer-events:none}
 .ov-board .ov-flip.is-open .ov-face-back{opacity:1;pointer-events:auto}
 .ov-board .ov-flip.is-open .ov-face-front{opacity:0}
 .ov-mac .ov-dicon:hover{transform:none}
}
