:root{--leyo-brown:#785a3c;--leyo-brown-mid:#8b6f47;--leyo-brown-soft:#b79b78;--leyo-brown-deep:#4e3b25;--leyo-tan:#d4a574;--leyo-sand:#e8dac2;--cream:#faf6f0;--cream-soft:#fdfaf4;--paper:#fff;--border:#e8dfd0;--sky:#7ba7bc;--leaf:#9ab37f;--sunset:#e8a87c;--ink:#3d2f1f;--ink-soft:#6b5a48;--ink-muted:#8c7b6b;--pickup:#e8951c;--radius:12px;--shadow:0 1px 2px #3d2f1f0f, 0 8px 24px #3d2f1f0f;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{overflow-x:hidden}body{font-family:var(--font-sans);background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.55}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.topbar{background:var(--cream-soft);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;padding:16px 28px;display:flex;position:sticky;top:0}.topbar .brand{align-items:baseline;gap:10px;display:flex}.topbar .brand b{color:var(--leyo-brown);letter-spacing:.5px;font-size:20px}.topbar .brand span{color:var(--ink-muted);font-size:13px}.topbar .user{color:var(--ink-soft);align-items:center;gap:14px;font-size:13px;display:flex}.wrap{max-width:1080px;margin:0 auto;padding:36px 28px 80px}.crumb{color:var(--ink-muted);margin-bottom:14px;font-size:13px}.crumb a:hover{color:var(--leyo-brown)}.page-title{color:var(--leyo-brown-deep);margin:0 0 6px;font-size:26px;font-weight:800}.page-sub{color:var(--ink-muted);margin:0 0 28px;font-size:15px}.cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;display:grid}.card{background:var(--cream-soft);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 24px;transition:transform .15s,box-shadow .15s,border-color .15s;display:block}.card:hover{border-color:var(--leyo-brown-soft);transform:translateY(-3px);box-shadow:0 12px 32px #3d2f1f1a}.card .ic{font-size:30px}.card h3{color:var(--leyo-brown-deep);margin:14px 0 6px;font-size:19px}.card p{color:var(--ink-muted);margin:0;font-size:14px}.card .tag{color:var(--leyo-brown);background:var(--leyo-sand);border-radius:999px;margin-top:14px;padding:3px 10px;font-size:12px;display:inline-block}.card.soon{opacity:.68}.panel{background:var(--cream-soft);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.panel h2{color:var(--leyo-brown-deep);margin-bottom:16px;font-size:16px}.field{margin-bottom:16px}.field label{color:var(--ink-soft);margin-bottom:6px;font-size:13px;font-weight:700;display:block}.field input,.field textarea,.field select{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px}.field textarea{resize:vertical;min-height:90px}.field input:focus,.field textarea:focus{outline:2px solid var(--leyo-brown-soft);border-color:#0000}.row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.hint{color:var(--ink-muted);margin-top:4px;font-size:12px}.btn{background:var(--leyo-brown);color:var(--cream);border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:15px;font-weight:700;display:inline-flex}.btn:hover{background:var(--leyo-brown-mid)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{color:var(--leyo-brown);border:2px solid var(--leyo-brown);background:0 0;padding:10px 22px}.btn.ghost:hover{background:var(--leyo-sand)}.btn-row{flex-wrap:wrap;gap:12px;margin-top:20px;display:flex}.split{grid-template-columns:minmax(0,440px) 1fr;align-items:start;gap:24px;display:grid}@media (max-width:900px){.split,.row{grid-template-columns:1fr}}.preview-frame{border:1px solid var(--border);border-radius:var(--radius);background:var(--paper);width:100%;height:820px;box-shadow:var(--shadow)}.dropzone{border:2px dashed var(--leyo-brown-soft);text-align:center;color:var(--ink-muted);background:var(--paper);cursor:pointer;border-radius:10px;padding:22px;transition:background .15s}.dropzone:hover{background:#fffdf8}.dropzone.drag{background:var(--leyo-sand);border-color:var(--leyo-brown)}.login-shell{background:radial-gradient(1200px 600px at 50% -10%, #fff7ec 0%, var(--cream) 60%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--cream-soft);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow);text-align:center;border-radius:16px;padding:36px 30px}.login-card .logo{color:var(--leyo-brown);font-size:30px;font-weight:800}.login-card .logo small{color:var(--ink-muted);margin-top:4px;font-size:13px;font-weight:500;display:block}.login-card form{text-align:left;margin-top:26px}.login-card .btn{width:100%;margin-top:8px}.err{color:#b23b2e;min-height:18px;margin-top:12px;font-size:13px}.spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.btn.ghost .spinner{border-color:#785a3c4d;border-top-color:var(--leyo-brown)}@keyframes spin{to{transform:rotate(360deg)}}.badge{background:var(--leyo-sand);color:var(--leyo-brown-deep);border-radius:999px;padding:4px 10px;font-size:12px}.notice{border:1px solid var(--leyo-tan);color:var(--leyo-brown-deep);background:#fff7ea;border-radius:8px;margin-bottom:16px;padding:12px 14px;font-size:13px}
