:root{--paper: #f4eee2;--paper-2: #ede4d3;--paper-3: #e4d8c2;--ink: #1b1814;--ink-2: #3d372e;--ink-3: #6e6558;--ink-4: #9a9082;--cinnabar: #a33a2e;--cinnabar-2: #c2564a;--gold: #9a7b4f;--line: #d5c7ae;--line-soft: rgba(27, 24, 20, .1);--serif: "Songti SC", "STSong", "SimSun", "Noto Serif CJK SC", "Source Han Serif SC", serif;--kai: "Kaiti SC", "STKaiti", "KaiTi", "楷体", "Songti SC", serif;--sans: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;--shadow-float: 0 18px 50px rgba(27, 24, 20, .18);--radius: 2px}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background-color:var(--paper);background-image:radial-gradient(1200px 700px at 12% -8%,rgba(255,252,243,.9),transparent 60%),radial-gradient(900px 620px at 88% 4%,rgba(224,210,184,.45),transparent 65%),linear-gradient(180deg,#f6f0e5,#f1e9da 55%,#eee5d3);color:var(--ink);font-family:var(--serif);font-size:15px;line-height:1.85;letter-spacing:.015em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:.5;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='0.16'/%3E%3C/svg%3E")}#app{position:relative;z-index:1;min-height:100vh}a{color:inherit;text-decoration:none}button{font-family:inherit}h1,h2,h3,h4,p{margin:0}::selection{background:#a33a2e2e}.container{width:100%;max-width:1180px;margin:0 auto;padding:0 28px}.container-narrow{max-width:860px}.page{padding:44px 0 96px}.stack-8>*+*{margin-top:8px}.stack-16>*+*{margin-top:16px}.stack-24>*+*{margin-top:24px}.stack-40>*+*{margin-top:40px}.row{display:flex;align-items:center;gap:12px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:16px}.grow{flex:1}.muted{color:var(--ink-3)}.small{font-size:13px}.tiny{font-size:12px}.kai{font-family:var(--kai)}.sans{font-family:var(--sans)}.display{font-family:var(--kai);font-weight:400;font-size:clamp(34px,5vw,58px);line-height:1.28;letter-spacing:.08em}.title-lg{font-family:var(--kai);font-size:30px;font-weight:400;letter-spacing:.1em;line-height:1.4}.title-md{font-family:var(--kai);font-size:21px;font-weight:400;letter-spacing:.08em}.title-sm{font-family:var(--kai);font-size:17px;letter-spacing:.06em}.eyebrow{font-family:var(--sans);font-size:11px;letter-spacing:.34em;color:var(--ink-4);text-transform:uppercase}.serif-num{font-family:var(--serif);font-variant-numeric:tabular-nums;letter-spacing:.04em}.hairline{height:1px;background:var(--line);border:0;margin:0}.hairline-soft{height:1px;background:var(--line-soft);border:0;margin:0}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-bottom:14px;border-bottom:1px solid var(--ink);margin-bottom:26px}.section-head .section-title{font-family:var(--kai);font-size:24px;letter-spacing:.14em}.section-head .section-sub{font-family:var(--sans);font-size:12px;letter-spacing:.18em;color:var(--ink-4)}.frame{position:relative;background:#fffcf585;border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px}.frame-flat{background:#fffcf557;border:1px solid var(--line-soft);border-radius:var(--radius);padding:22px 24px}.frame:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid rgba(27,24,20,.05);pointer-events:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 22px;border:1px solid var(--ink);background:transparent;color:var(--ink);font-family:var(--serif);font-size:14px;letter-spacing:.16em;border-radius:var(--radius);cursor:pointer;transition:background .22s ease,color .22s ease,border-color .22s ease,transform .22s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--ink);color:var(--paper)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--cinnabar);border-color:var(--cinnabar);color:#fdf6ea}.btn-primary:hover{background:#8c2f25;border-color:#8c2f25;color:#fff}.btn-ghost{border-color:var(--line);color:var(--ink-2)}.btn-ghost:hover{background:#1b18140f;color:var(--ink);border-color:var(--ink-3)}.btn-sm{height:32px;padding:0 14px;font-size:12.5px;letter-spacing:.1em}.btn-text{border:0;background:none;color:var(--ink-3);padding:4px 6px;font-size:13px;letter-spacing:.08em;cursor:pointer}.btn-text:hover{color:var(--cinnabar)}.btn-danger{border-color:#a33a2e66;color:var(--cinnabar)}.btn-danger:hover{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}.seal{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;background:var(--cinnabar);color:#fdf6ea;font-family:var(--kai);font-size:15px;line-height:1.15;letter-spacing:.02em;text-align:center;border-radius:2px;transform:rotate(-2deg);box-shadow:inset 0 0 0 2px #fdf6ea59,0 2px 8px #a33a2e38;writing-mode:vertical-rl;padding:5px 2px;flex:none}.seal-sm{width:34px;height:34px;font-size:12px}.tag{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border:1px solid var(--line);color:var(--ink-3);font-family:var(--sans);font-size:11px;letter-spacing:.08em;border-radius:2px;background:#fffcf566}.tag-red{border-color:#a33a2e52;color:var(--cinnabar);background:#a33a2e0d}.tag-gold{border-color:#9a7b4f66;color:var(--gold)}.field{display:block}.field+.field{margin-top:18px}.field-label{display:block;font-family:var(--sans);font-size:12px;letter-spacing:.14em;color:var(--ink-3);margin-bottom:7px}.field-label .req{color:var(--cinnabar);margin-left:3px}.input,.textarea,.select{width:100%;background:#fffdf7b3;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font-family:var(--serif);font-size:15px;padding:10px 13px;outline:none;transition:border-color .2s ease,background .2s ease}.input{height:44px}.textarea{min-height:110px;resize:vertical;line-height:1.8}.select{height:44px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 18px) 19px,calc(100% - 13px) 19px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.input:focus,.textarea:focus,.select:focus{border-color:var(--ink-2);background:#fffdf7}.input::placeholder,.textarea::placeholder{color:var(--ink-4);opacity:.7}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid .field+.field{margin-top:0}.form-grid .field-full{grid-column:1 / -1}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-family:var(--sans);font-weight:400;font-size:11px;letter-spacing:.16em;color:var(--ink-4);padding:10px 12px;border-bottom:1px solid var(--ink);white-space:nowrap}.table td{padding:14px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table tbody tr{transition:background .18s ease}.table tbody tr:hover{background:#fffcf599}.table .cell-name{font-family:var(--kai);font-size:16px;letter-spacing:.06em;cursor:pointer}.table .cell-name:hover{color:var(--cinnabar)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#1b181461;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:8vh 20px 40px;overflow-y:auto;animation:fadeIn .2s ease}.modal{width:100%;max-width:620px;background:var(--paper);border:1px solid var(--ink-2);box-shadow:var(--shadow-float);position:relative;animation:riseIn .26s cubic-bezier(.2,.8,.25,1)}.modal-wide{max-width:820px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 26px 16px;border-bottom:1px solid var(--line)}.modal-title{font-family:var(--kai);font-size:20px;letter-spacing:.12em}.modal-body{padding:24px 26px 8px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 26px 22px}.icon-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ink-3);font-size:18px;cursor:pointer;border-radius:2px}.icon-btn:hover{background:#1b18140f;color:var(--ink)}.toast-wrap{position:fixed;top:22px;left:50%;transform:translate(-50%);z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{padding:10px 20px;background:var(--ink);color:var(--paper);font-size:13px;letter-spacing:.08em;border-radius:2px;box-shadow:0 8px 26px #1b18143d;animation:toastIn .28s ease}.toast-error{background:var(--cinnabar)}.empty{padding:56px 20px;text-align:center;color:var(--ink-4)}.empty-mark{font-family:var(--kai);font-size:40px;letter-spacing:.2em;color:var(--line);margin-bottom:12px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes riseIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:riseIn .6s cubic-bezier(.2,.8,.25,1) both}.delay-1{animation-delay:.08s}.delay-2{animation-delay:.16s}.delay-3{animation-delay:.24s}.delay-4{animation-delay:.32s}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#1b18142e;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#1b18144d}@media(max-width:760px){.container{padding:0 18px}.page{padding:26px 0 72px}.form-grid{grid-template-columns:1fr}.frame{padding:20px 18px}}
